JP2017054248A - メモリコントローラ、メモリおよびメモリシステム - Google Patents

メモリコントローラ、メモリおよびメモリシステム Download PDF

Info

Publication number
JP2017054248A
JP2017054248A JP2015176787A JP2015176787A JP2017054248A JP 2017054248 A JP2017054248 A JP 2017054248A JP 2015176787 A JP2015176787 A JP 2015176787A JP 2015176787 A JP2015176787 A JP 2015176787A JP 2017054248 A JP2017054248 A JP 2017054248A
Authority
JP
Japan
Prior art keywords
memory
read
area
identification information
data
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
JP2015176787A
Other languages
English (en)
Inventor
大久保 英明
Hideaki Okubo
英明 大久保
中西 健一
Kenichi Nakanishi
健一 中西
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 JP2015176787A priority Critical patent/JP2017054248A/ja
Priority to PCT/JP2016/068399 priority patent/WO2017043149A1/ja
Publication of JP2017054248A publication Critical patent/JP2017054248A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】抵抗変化型メモリにおける抵抗状態の切り分けに十分な余裕を確保して、信頼性の高いデータリードを行う。【解決手段】メモリは、それぞれが第1および第2の値の何れかを示す複数のメモリセルを備える。リード領域識別情報記憶部は、第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れであるかを識別するためのリード領域識別情報を記憶する。リード要求部は、リード領域識別情報に基づいて複数の領域の何れであるかを識別して、その識別された領域のリード基準に従ったリードを行うようメモリに要求する。【選択図】図16

Description

本技術は、メモリシステムに関する。詳しくは、第1および第2の値の何れかを示す複数のメモリセルから構成されるメモリ、そのメモリコントローラ、および、そのメモリを含むメモリシステム。
情報処理システムにおいては、ワークメモリとして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)などが挙げられる。
このような不揮発性メモリの中で、抵抗変化型メモリであるReRAMは、可変セル抵抗の抵抗値を変化させることにより、メモリセルとしての記憶を実現する。すなわち、メモリセル構造を形成した後にフォーミング処理を行うことにより、メモリセル内の高抵抗層に電流パスを形成する。そして、メモリセルにデータを記録する際には、メモリセル内の高抵抗層に形成された電流パスの一部を形成または消滅させることにより、メモリの抵抗状態を遷移させる。具体的には、低抵抗状態(LRS:Low Resistance State)と高抵抗状態(HRS:High Resistance State)の何れであるかによって、「1」または「0」を記憶する。一方、記録されたデータの読出しの際には、リファレンス抵抗値とメモリセルの抵抗値とを比較して、低抵抗状態または高抵抗状態の何れの状態であるかを判断して、「1」または「0」のデータとして読み出す(例えば、特許文献1参照。)。
米国特許第7697317号明細書
ReRAMにおいては、電流パスの一部を形成または消滅するため、フォーミング処理に必要な電圧よりも低い電圧でデータ書込みが可能である。その一方で、メモリセルの高抵抗状態における抵抗値と低抵抗状態における抵抗値とが比較的近いため、時間経過による抵抗状態の劣化やノイズの影響によって、データ読出しの際の抵抗状態の切り分けの判断に誤りが生じるおそれがある。
本技術はこのような状況に鑑みて生み出されたものであり、抵抗変化型メモリにおける抵抗状態の切り分けに十分な余裕を確保して、信頼性の高いデータリードを行うことを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、それぞれが第1および第2の値の何れかを示す複数のメモリセルから構成されるメモリにおいて上記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れであるかを識別するためのリード領域識別情報を記憶するリード領域識別情報記憶部と、上記リード領域識別情報に基づいて上記複数の領域の何れであるかを識別して当該識別された領域の上記リード基準に従ったリードを行うよう上記メモリに要求するリード要求部とを具備するメモリコントローラ、および、メモリシステムである。これにより、リード領域識別情報に基づいて識別された領域のリード基準に従ったリードを行うという作用をもたらす。
また、この第1の側面において、上記メモリセルは抵抗変化型メモリであり、上記リード基準は、上記メモリセルの抵抗状態を切り分けるためのリファレンス抵抗値であってもよい。これにより、ReRAMなどの抵抗変化型メモリにおいて、領域毎に異なるリード閾値によってリードを行うという作用をもたらす。
また、この第1の側面において、上記複数の領域のうち第1の領域においては、フォーミング処理された上記メモリセルの抵抗状態と上記フォーミング処理がされていない上記メモリセルの抵抗状態とが第1のリファレンス抵抗値によって切り分けられ、上記複数の領域のうち第2の領域においては、上記第1のリファレンス抵抗値よりも低い第2のリファレンス抵抗値によって2つの抵抗状態の何れかが切り分けられるようにしてもよい。これにより、第1のリファレンス抵抗値(高抵抗リード閾値)を用いた信頼性の高いリード処理と、第2のリファレンス抵抗値(通常リード閾値)を用いた通常のリード処理とを提供するという作用をもたらす。
また、この第1の側面において、上記第1の領域においては上記第2の領域よりもエラー訂正能力の低いエラー訂正コードを用いてエラー訂正処理を行うエラー訂正処理部をさらに具備するようにしてもよい。これにより、領域の性質に応じたエラー訂正処理を行うという作用をもたらす。
また、この第1の側面において、上記第1の領域について上記フォーミング処理がされていない上記メモリセルに対して上記フォーミング処理を行って上記第2の領域に変化させるようにしてもよい。これにより、第1の領域として利用されていた領域を第2の領域として再利用するという作用をもたらす。
また、この第1の側面において、上記第1の領域にはコントローラファームウェアが予め記憶され、上記第1の領域から読み出された上記コントローラファームウェアを実行するようにしてもよい。これにより、コントローラファームウェアの信頼性を向上させるという作用をもたらす。
また、この第1の側面において、上記リード領域識別情報記憶部は揮発性メモリから構成され、上記リード領域識別情報を上記リード領域識別情報記憶部に供給するリード領域識別情報供給部をさらに具備するようにしてもよい。ここで、上記リード領域識別情報供給部は、不揮発性メモリから構成されて上記リード領域識別情報を記憶する第2のリード領域識別情報記憶部であってもよい。また、上記リード領域識別情報供給部は、外部から上記リード領域識別情報を受け取るインターフェースであってもよい。
また、本技術の第2の側面は、それぞれが第1および第2の値の何れかを示す複数のメモリセルを具備し、上記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れかに上記複数のメモリセルを区分するメモリである。これにより、領域のリード基準に従ったリードを行うという作用をもたらす。
また、この第2の側面において、上記メモリセルは抵抗変化型メモリであり、上記リード基準は、上記メモリセルの抵抗状態を切り分けるためのリファレンス抵抗値であってもよい。これにより、ReRAMなどの抵抗変化型メモリにおいて、領域毎に異なるリード閾値によってリードを行うという作用をもたらす。
また、この第2の側面において、上記複数の領域のうち第1の領域においては、フォーミング処理された上記メモリセルの抵抗状態と上記フォーミング処理がされていない上記メモリセルの抵抗状態とが第1のリファレンス抵抗値によって切り分けられ、上記複数の領域のうち第2の領域においては、上記第1のリファレンス抵抗値よりも低い2つの抵抗状態の何れかが第2のリファレンス抵抗値によって切り分けられるようにしてもよい。これにより、第1のリファレンス抵抗値を用いた信頼性の高いリード処理と、第2のリファレンス抵抗値を用いた通常のリード処理とを提供するという作用をもたらす。
また、この第2の側面において、上記第1の領域について上記フォーミング処理がされていない上記メモリセルに対して上記フォーミング処理を行って上記第2の領域に変化させるようにしてもよい。これにより、メモリ自身の判断により、必要なメモリセルに対してフォーミング処理を行うという作用をもたらす。
本技術によれば、抵抗変化型メモリにおける抵抗状態の切り分けに十分な余裕を確保して、信頼性の高いデータリードを行うという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの一構成例を示す図である。 本技術の実施の形態におけるホストコンピュータ100の一構成例を示す図である。 本技術の実施の形態におけるホストコンピュータ100のプロセッサ110において動作するソフトウェアの例を示す図である。 本技術の実施の形態におけるメモリコントローラ200の一構成例を示す図である。 本技術の実施の形態におけるメモリコントローラ200のRAM220に記憶される管理情報の例を示す図である。 本技術の実施の形態におけるアドレス変換テーブル221の例を示す図である。 本技術の実施の形態におけるリード領域識別情報222の例を示す図である。 本技術の実施の形態におけるファームウェア領域情報223の例を示す図である。 本技術の実施の形態における未割当物理ページ情報224の例を示す図である。 本技術の実施の形態におけるメモリ300の一構成例を示す図である。 本技術の実施の形態におけるバッファ340に保持される各バッファの例を示す図である。 本技術の実施の形態におけるメモリセルアレイ310の構造の一例を示す図である。 本技術の実施の形態におけるメモリセルアレイ310に記憶されるデータの構造の一例を示す図である。 本技術の実施の形態におけるメモリセル313の回路例を示す図である。 本技術の実施の形態における可変セル抵抗315の概念図である。 本技術の実施の形態におけるメモリセル313の抵抗分布を示す図である。 本技術の実施の形態におけるメモリ300の物理ページについてフォーミング処理が実行された後の例を示す図である。 本技術の実施の形態におけるメモリ300のライトリクエスト処理の処理手順例を示す流れ図である。 本技術の実施の形態におけるメモリ300の物理ページリセット処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリ300の物理ページセット処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリ300の通常リードリクエスト処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリ300の高抵抗リードリクエスト処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリコントローラ200の電源投入時のファームウェアロード処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリコントローラ200のファームウェアリード処理の処理手順の一例を示す流れ図である。 本技術の第1の実施の形態におけるメモリコントローラ200のリードコマンド処理の処理手順の一例を示す流れ図である。 本技術の第1の実施の形態におけるメモリコントローラ200のライトコマンド処理の処理手順の一例を示す流れ図である。 本技術の第2の実施の形態におけるメモリ300の物理ページの状態例を示す図である。 本技術の第2の実施の形態におけるメモリコントローラ200のRAM220に記憶される管理情報の例を示す図である。 本技術の第2の実施の形態における高抵抗リード領域使用状況管理テーブル225の例を示す図である。 本技術の第2の実施の形態におけるリード領域識別情報222の例を示す図である。 本技術の第2の実施の形態におけるメモリ300のセル選択フォーミングリクエスト処理の処理手順例を示す流れ図である。 本技術の第2の実施の形態におけるメモリコントローラ200の領域使用状況取得処理の処理手順例を示す流れ図である。 本技術の第2の実施の形態におけるメモリコントローラ200の未フォーミング領域ライトコマンド処理の処理手順例を示す流れ図である。 本技術の第2の実施の形態におけるメモリコントローラ200のリードコマンド処理の処理手順の一例を示す流れ図である。 本技術の第2の実施の形態におけるメモリコントローラ200のライトコマンド処理の処理手順の一例を示す流れ図である。 本技術の第3の実施の形態におけるリード領域識別情報222の遷移の一例を示す図である。 本技術の第3の実施の形態におけるメモリコントローラ200のライトコマンド処理の処理手順の一例を示す流れ図である。 本技術の第3の実施の形態におけるメモリコントローラ200の全セルフォーミング処理の処理手順の一例を示す流れ図である。 本技術の実施の形態の第1の変形例におけるメモリ300の全セルフォーミングリクエスト処理の処理手順の一例を示す流れ図である。 本技術の実施の形態の第2の変形例におけるメモリコントローラ200のリード領域識別情報転送コマンド処理の処理手順の一例を示す流れ図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(コントローラファームウェアを高抵抗リード領域に予め記憶する例)
2.第2の実施の形態(高抵抗リード領域に対してライトを行う例)
3.第3の実施の形態(高抵抗リード領域を通常リード領域として再利用する例)
4.第1の変形例(フォーミング処理をメモリにおいて行う例)
5.第2の変形例(リード領域識別情報をホストコンピュータから供給する例)
6.第3の変形例(高抵抗リード領域のエラー訂正能力を低く設定する例)
<1.第1の実施の形態>
[メモリシステムの全体構成]
図1は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、メモリシステム400とから構成される。メモリシステム400は、メモリ300と、メモリコントローラ200とから構成される。
ホストコンピュータ100は、メモリシステム400に対してデータのリードやライトなどを要求するコマンドを発行するものである。
メモリ300は不揮発性メモリからなり、特に、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM)を想定する。NVRAMの例として、この実施の形態では、抵抗変化型のReRAMに着目する。
メモリコントローラ200は、ホストコンピュータ100からの要求に対して、メモリ300の制御を行うものである。このメモリコントローラ200において、ホストコンピュータ100側とのインターフェース(I/F)をホストインターフェース201と称し、メモリ300側とのインターフェースをメモリインターフェース203と称する。
[ホストコンピュータの構成]
図2は、本技術の実施の形態におけるホストコンピュータ100の一構成例を示す図である。このホストコンピュータ100は、プロセッサ110と、RAM120と、コントローラインターフェース102とを備える。これらは、ホストバス180によって相互に接続されている。
プロセッサ110は、ホストコンピュータ100における全体の動作を制御するものである。このプロセッサ110において、図3に示すアプリケーションプログラム111、ホストOS(オペレーティングシステム)112、および、デバイスドライバ113が動作する。
アプリケーションプログラム111は、ユーザからの指示によって動作する個別のプログラムである。アプリケーションプログラム111は、ホストOS112に対して、メモリ300からのデータリード指示、および、メモリ300からのデータライト指示を行い、ホストOS112からの応答を受け取る。
ホストOS112は、ホストコンピュータ100を動作させるための基本ソフトウェアである。ホストOS112は、デバイスドライバ113に対して、メモリ300からのデータリード指示、メモリ300からのデータライト指示を行い、その応答を受け取る。
デバイスドライバ113は、ホストコンピュータ100のハードウェアを制御するためのソフトウェアである。デバイスドライバ113は、コントローラインターフェース102からメモリコントローラ200を経由して、メモリ300にアクセスを行う。
RAM120は、プロセッサ110が動作するために必要なコード領域およびデータ領域を記憶するメモリである。
コントローラインターフェース102は、メモリコントローラ200とのやりとりを行うためのインターフェースである。
[メモリコントローラの構成]
図4は、本技術の実施の形態におけるメモリコントローラ200の一構成例を示す図である。
メモリコントローラ200は、プロセッサ210と、RAM220と、ROM230と、ECC処理部240と、ファームウェアロード部250と、ホストインターフェース201と、メモリインターフェース203とを備える。
プロセッサ210は、メモリコントローラ200全体の制御を行うものである。このプロセッサ210は、ROM230に格納されたソフトウェアを実行する。このプロセッサ210は、ホストコンピュータ100から発行されたコマンドを解釈して、メモリ300に対して必要なリクエストを要求する。このプロセッサ210においては、コントローラファームウェアが動作する。このコントローラファームウェアは、制御タスクおよびコマンド実行タスクから構成され、メモリ300に記録される。プロセッサ210は、RAM220をコード領域およびデータ領域として使用して、制御タスクおよびコマンド実行タスクを実行する。なお、プロセッサ210は、特許請求の範囲に記載のリード領域識別情報記憶部(リード領域識別情報222)、
リード要求部の一例である。
RAM220は、揮発性のメモリであり、プロセッサ210のワーキングメモリや、メモリ300を管理するデータを一時的に保持するための領域として用いられる。また、RAM220は、ホストコンピュータ100とメモリコントローラ200との間で転送されるデータを一時的に保持するための領域や、メモリコントローラ200とメモリ300との間で転送されるデータを一時的に保持するための領域としても用いられる。このRAM220に記憶される管理情報などについては後述する。
ROM230は、メモリシステムを制御するためのソフトウェアプログラムを格納するメモリである。
ECC処理部240は、メモリ300に記録されるデータのエラー訂正コード(ECC:Error Correcting Code)の生成、および、メモリ300から読み出したデータのエラー検出および訂正処理を実行するものである。ECC処理部240は、例えば8ビットの訂正能力を有する。このとき想定する冗長ビット数は16バイトである。
ファームウェアロード部250は、コントローラファームウェアをメモリ300からロードしてRAM220に書き込むものである。メモリシステム400に電源が投入されると、ファームウェアロード部250は、コントローラファームウェアをメモリ300から読み出すために必要な情報を、ROM230から取得する。そして、ファームウェアロード部250は、その情報に基づいてコントローラファームウェアを読み出して、RAM220に書き込む。
図5は、本技術の実施の形態におけるメモリコントローラ200のRAM220に記憶される管理情報の例を示す図である。RAM220には、アドレス変換テーブル221と、リード領域識別情報222と、ファームウェア領域情報223と、未割当物理ページ情報224とが記憶されている。
アドレス変換テーブル221は、ホストコンピュータ100がコマンドで指定する論理アドレスを、対応する物理アドレスに変換するためのテーブルである。このアドレス変換は、コマンド実行タスクによって実行される。この実施の形態では、論理アドレスは512バイトでアドレッシングされる。1つの論理アドレスに書き込まれる512バイトのデータは、メモリ300の1つの物理ページにユーザデータとして書き込まれる。したがって、1つの論理アドレスに、1つの物理アドレスが割り当てられる。図6は、本技術の実施の形態におけるアドレス変換テーブル221の例を示す図である。この例では、物理ページアドレス「0x00000000」から「0x000003FF」までは、コントローラファームウェアが書き込まれていることを想定するため、コマンド実行タスクはこの領域をデータのライトおよびリードの対象として使用しない。なお、「0x」はそれに続く数字が16進数であることを表す。
リード領域識別情報222は、メモリ300からリードする際のリファレンス抵抗として、通常リード閾値を用いる通常リード領域と、高抵抗リード閾値を用いる高抵抗リード領域とを識別するための情報を記憶するものである。図7は、本技術の実施の形態におけるリード領域識別情報222の例を示す図である。この例では、コントローラファームウェアが記憶される領域を高抵抗リード領域として区分し、それ以外の領域を通常リード領域と区分している。なお、リード領域識別情報222は、特許請求の範囲に記載のリード領域識別情報記憶部の一例である。
ファームウェア領域情報223は、コントローラファームウェアが記憶される領域を示す情報を記憶するものである。図8は、本技術の実施の形態におけるファームウェア領域情報223の例を示す図である。この例では、物理ページアドレス「0x00000000」から「0x000003FF」までにコントローラファームウェアが記憶されていることを想定する。
未割当物理ページ情報224は、論理アドレスに割り当てられていない物理ページアドレスを保持して管理するものである。ライトコマンドにおいて指定された論理アドレスに対して物理ページアドレスが割り当てられていない場合、この未割当物理ページ情報224から、ライト対象となる物理ページアドレスが取得される。物理ページアドレスを取得する際は、最もアドレスの値の小さい順に取得されていく。図9は、本技術の実施の形態における未割当物理ページ情報224の例を示す図である。
リード領域識別情報222およびファームウェア領域情報223に相当する情報は、メモリシステム400の製造時または出荷時に、ROM230に記憶されていることを想定する。リード領域識別情報222に相当する情報は、メモリシステム400の電源投入時に、ROM230から読み出されて、リード領域識別情報222としてRAM220に展開される。アドレス変換テーブル221および未割当物理ページ情報224は、メモリシステム400の電源遮断時に、RAM220からメモリ300に書き込まれる。すなわち、ROM230は、特許請求の範囲に記載の第2のリード領域識別情報記憶部の一例である。
[メモリの構成]
図10は、本技術の実施の形態におけるメモリ300の一構成例を示す図である。このメモリ300は、メモリセルアレイ310と、ロウ制御部311と、カラム制御部312と、プレート制御部320とを備える。また、このメモリ300は、ライト制御部331と、リード制御部332と、リフレッシュ制御部333と、バッファ340と、検証処理部350と、リクエスト処理部360とを備える。
また、このメモリ300は、メモリコントローラ200との間のインターフェースである制御インターフェース309を備えている。この制御インターフェース309は、メモリコントローラ200からのリクエストや物理アドレスおよびパラメータの受信、メモリセルアレイ310へのライトデータの受信、メモリセルアレイ310からのリードデータの送信、制御データの受送信などを行う。また、このメモリ300は、テストインターフェース308を備えている。このテストインターフェース308は、メモリシステム400の製造時、または、メモリ300の製造時に使用される。
メモリセルアレイ310は、複数のメモリセルからなるメモリセルアレイであり、ビット毎に2値の何れかの値を記憶するメモリセルが2次元状(マトリクス状)に多数配列されている。このメモリセルアレイ310にアクセスするメモリコントローラ200からのリクエストの単位は物理ページ単位である。物理ページには物理ページアドレスが割り振られている。
ロウ制御部311は、リクエスト処理部360からの指示に従って、メモリセルアレイ310のロウアドレスを特定してアクセス制御するものである。カラム制御部312は、リクエスト処理部360からの指示に従って、メモリセルアレイ310のカラムアドレスを特定してアクセス制御するものである。プレート制御部320は、メモリセルアレイ310のメモリセルにセル電流を流すためのプレート電圧を制御するものである。
ライト制御部331は、メモリセルアレイ310に書込みを行うための制御を実行するものである。リード制御部332は、メモリセルアレイ310から読出しを行うための制御を実行するものである。リフレッシュ制御部333は、メモリセルアレイ310に対してリフレッシュを行うための制御を実行するものである。
バッファ340は、各リクエストを処理するために必要なデータを保持するバッファの格納領域である。このバッファ340の構成については後述する。
検証処理部350は、メモリセルアレイ310にデータが正しく書き込まれたか否かを検証(ベリファイ)するものである。
リクエスト処理部360は、メモリコントローラ200からのリクエストを処理するためのものである。このリクエスト処理部360は、メモリコントローラ200からのリクエストがライトリクエストであれば、ライト制御部331に制御を指示する。また、このリクエスト処理部360は、メモリコントローラ200からのリクエストがリードリクエストであれば、リード制御部332に制御を指示する。また、このリクエスト処理部360は、メモリコントローラ200からのリクエストがリフレッシュリクエストであれば、リフレッシュ制御部333に制御を指示する。
図11は、本技術の実施の形態におけるバッファ340に保持される各バッファの例を示す図である。この例では、バッファ340に、ライトデータバッファ341と、リードデータバッファ342と、ベリファイバッファ343とが設けられることを想定している。
ライトデータバッファ341は、メモリセルアレイ310に対するライト対象となるライトデータを保持するバッファである。リードデータバッファ342は、メモリセルアレイ310から読み出されたリードデータを保持するバッファである。ベリファイバッファ343は、検証処理部350による検証(ベリファイ)結果を保持するバッファである。また、ベリファイバッファ343は、セット対象またはリセット対象となるビットを特定するためにも使用される。これら各バッファは、物理ページと同様にそれぞれ528バイト幅を有する。
図12は、本技術の実施の形態におけるメモリセルアレイ310の構造の一例を示す図である。このメモリセルアレイ310においては、メモリセル313をマトリクス状に、ロウ方向にN行(Nは2以上の整数)、カラム方向に4224列として配置している。メモリセル313は、ワード線WL、ビット線BL、プレート線PLに接続されている。同図において、N本のワード線WLをWL[1]乃至[N]、4224本のビット線BLをBL[1]乃至[4224]、4224本のプレート線PLをPL[1]乃至[4224]と記している。ワード線WLはロウ制御部311に接続され、ビット線BLはカラム制御部312に接続されている。
この例では、メモリセルアレイ310のロウ方向のメモリセルを64個のブロックBLK318に分割している。したがって、ブロックBLK318の各々はN行66列のメモリセルから構成される。同図において、64個のブロックBLK318の各々をBLK[1]乃至[64]と記している。ブロックBLK318の各々は、66本のビット線BLに接続することになる。ブロックBLK318内では、66本のビット線BLをカラム線CLM[1]乃至[66]と記している。
同一のワード線WLに接続された4224個のメモリセルの集合を物理ページと称する。メモリコントローラ200は、物理ページを単位としてメモリ300にアクセスする。物理ページには、固有の物理ページアドレスが割り当てられる。
64個のブロックBLK318の各々から1つずつ選択された64個のメモリセルから構成される集合をグループと称する。ここでは、1つのグループに属するメモリセルの数は、メモリセルアレイ310において許容される電流量に基づいて決定されている。1本のワード線WLに接続された4224個のメモリセルのうち、CLM[1]に接続するメモリセルの集合を第1グループと称し、CLM[2]に接続するメモリセルの集合を第2グループと称する。以下同様にして、CLM[66]に接続するメモリセルの集合を第66グループと称する。
ロウ制御部311は、リクエスト処理部360から入力される物理ページアドレスに基づいて指定されるワード線WLを選択し、所定の期間、所定の電圧により駆動する。ワード線WLの電圧は、ワード線WLに接続されたメモリセルを、ライト、リード、または、リフレッシュ可能な状態にするための電圧である。この電圧はワード線電圧と呼ばれ、ハイレベルでアクティブとなる。ロウ制御部311は、ワード線電圧としての波高値をもつパルスの印加タイミングと持続時間および印加電圧を制御する。
カラム制御部312は、ビット線BLの電位を読み出すセンスアンプを含む。これにより、4224ビット(528バイト)のデータを一括して読み出すことができる。
プレート制御部320は、メモリセルアレイ310のメモリセルにセル電流を流すためのプレート電圧を制御する。このプレート電圧は、ビット線BLの電圧との電圧差によってメモリセル電流の向きが決まる。そのため、プレート制御部320は、プレート電圧のビット線電圧に対する高さを制御して、セット時とリセット時とで電圧印可の方向を反転させるように制御する。リード時に印可される電圧の方向は、リセット時に印可される電圧の方向と同方向となるように制御を行う。
図13は、本技術の実施の形態におけるメモリセルアレイ310に記憶されるデータの構造の一例を示す図である。
上述のように、メモリセルアレイ310は、メモリセル313をマトリクス状に、ロウ方向にN行、カラム方向に4224列として配置している。なお、ここでは、物理アドレスとして、「0x00000000」から「0x01FFFFFF」をN個のアドレスを割り当てている。「0x」はそれに続く数字が16進数であることを表すため、10進数ではNは「33554432」となる。すなわち、メモリセルアレイ310は33554432個の物理ページから構成され、「0」乃至「33554431」の物理アドレスにより特定される。このとき、各物理ページは528バイト(4224ビット)を有する。
図14は、本技術の実施の形態におけるメモリセル313の回路例を示す図である。ここでは、メモリセル313として可変抵抗素子を想定し、1つのアクセストランジスタ(AT)314と、1つの可変セル抵抗(Rcell)315とにより構成されるものとする。可変セル抵抗315の一端はプレート線PLに接続され、他端はアクセストランジスタ314のソース端子に接続される。アクセストランジスタ314のドレイン端子はビット線BLに接続され、ゲート端子はワード線WLに接続される。
可変セル抵抗315は、ビット線BLよりプレート線PLを一定電圧高くすると、低抵抗状態(LRS:Low Resistance State)になる。この可変セル抵抗315を低抵抗状態にする動作を、セット動作と称する。一方、プレート線PLよりもビット線BLの電圧を上げると、可変セル抵抗315は、高抵抗状態(HRS:High Resistance State)になる。この可変セル抵抗315を高抵抗状態にする動作を、リセット動作と称する。
低抵抗状態と高抵抗状態との間で抵抗状態を可逆的に変化させることにより、1つのメモリセルによって1ビットを記憶することが可能な、複数回の書換えが可能なメモリが実現される。電圧の印加を止めた後もデータは保持されるため不揮発性メモリとして機能する。以下では、低抵抗状態のセルから読み出されるデータを「1」とし、高抵抗状態から読み出されるデータを「0」とした例について説明するが、これらは何れに対応付けても構わない。
図15は、本技術の実施の形態における可変セル抵抗315の概念図である。
セット動作においては、導電材料層3151に正電位(プラス電位)を印加するとともに、電極3154に負電位(マイナス電位)またはゼロ電位を印加すると、イオン源層3152から金属原子がイオン化して高抵抗層3153内を拡散していく。そして、電極側で電子と結合して析出し、または、高抵抗層3153の内部に拡散した状態で留まる。その結果、高抵抗層3153の内部に金属原子を多量に含む電流パスが形成され、または、高抵抗層3153の内部に金属原子による欠陥が多数形成され、高抵抗層3153の抵抗値が低くなる。このとき、イオン源層3152の抵抗値は、高抵抗層3153のセット動作前の抵抗値に比べて元々低いため、高抵抗層3153の抵抗値が低くなることにより、可変セル抵抗315全体の抵抗値も低くなる。つまり、可変セル抵抗315がオン状態(導通状態)となる。その後、電極3154および導電材料層3151への電圧の印加を中止し、可変セル抵抗315に電圧が印加されていない状態とすると、可変セル抵抗315の抵抗値が低くなった状態で保持される。
一方、リセット動作においては、導電材料層3151に負電位を印加するとともに、電極3154に正電位またはゼロ電位を印加すると、高抵抗層3153内に形成されていた電流パス、または、不純物準位を構成する金属原子がイオン化して、高抵抗層3153内を移動してイオン源層3152へと戻る。その結果、高抵抗層3153内から電流パスまたは欠陥が消滅して、高抵抗層3153の抵抗値が高くなる。このとき、イオン源層3152の抵抗値は元々低いため、高抵抗層3153の抵抗値が高くなることにより、可変セル抵抗315全体の抵抗値も高くなる。つまり、可変セル抵抗315がオフ状態(非導通状態)となる。その後、電極3154および導電材料層3151への電圧の印加を中止し、高抵抗層3153に電圧が印加されていない状態とすると、高抵抗層3153の抵抗値が高くなった状態で保持される。
このような抵抗変化メモリにおいては、メモリ製造時にメモリセル構造を形成した後、それをメモリセルとして使用可能な状態にするために、書込み電圧よりも高い電圧であるフォーミング電圧を印加するフォーミング動作(フォーミング処理)が実行される。すなわち、このフォーミング処理によって、HRSとLRSとの間で遷移可能な状態になる。
図16は、本技術の実施の形態におけるメモリセル313の抵抗分布を示す図である。
メモリセル313は、フォーミング処理前の状態では、初期抵抗状態3141に示す抵抗分布を示す。メモリセル313は、フォーミング処理により初期抵抗状態3141からLRS3142に遷移する。そして、リセット処理によりLRS3142からHRS3143に遷移し、セット処理によりHRS3143からLRS3142に遷移する。フォーミング処理を行うためには、上述のようにリセット処理またはセット処理よりも高いパルス電圧が必要となる。
このメモリセル313から、データをリードする場合、通常リード閾値と高抵抗リード閾値で示した2種類のリファレンス抵抗値を想定する。通常リード閾値を使用してデータをリードした場合には、LRS3142の状態であれば「1」、HRS3143または初期抵抗状態3141であれば「0」と判断される。また、高抵抗リード閾値を使用してデータをリードした場合には、LRS3142またはHRS3143の状態であれば「1」、初期抵抗状態3141であれば「0」と判断される。
通常リード閾値または高抵抗リード閾値のうち何れを使用してデータをリードするかは、メモリコントローラ200が決定する。メモリコントローラ200は、通常リード領域については通常リード閾値を使用してデータをリードし、高抵抗リード領域については高抵抗リード閾値を使用してデータをリードするよう決定する。通常リード閾値を使用してデータをリードする際には、メモリコントローラ200は通常リードリクエストをメモリ300に発行する。一方、高抵抗リード閾値を使用してデータをリードする際には、メモリコントローラ200は高抵抗リードリクエストをメモリ300に発行する。
高抵抗リード領域においては、「0」をライトするメモリセルにはフォーミング処理を行わず、「1」をライトするメモリセルにはフォーミング処理を行う。これにより、高抵抗リード領域において高抵抗リード閾値を使用してデータをリードすることができるようになる。この場合、抵抗分布の切り分けに十分な余裕を確保することができるため、時間経過やノイズによる影響を抑制して、信頼性の高いデータリードを行うことができる。
通常リード領域においては、全てのメモリセルがフォーミング処理される。これにより、フォーミング処理に用いられるパルス電圧よりも低いパルス電圧によってHRS3143とLRS3142との間の遷移が可能となる。
この第1の実施の形態では、メモリシステム400の製造時または出荷時に、テストインターフェース308を用いて、メモリ300に対して、コントローラファームウェアの書込みおよびフォーミング処理が実行されることを想定する。
コントローラファームウェアの書込みの際には、コントローラファームウェアの実行コードを、512バイト毎に分割し、分割した512バイト毎にエラー訂正コード(16バイト)を付加して、ページ単位でメモリ300に書き込む。データを書き込む際、データが「1」となるビットに対応するメモリセルのみに対してフォーミングを行い、データが「0」となるビットに対応するメモリセルに対してはフォーミングを行わない。
この第1の実施の形態では、コントローラファームウェアの実行コードは512Kバイトであることを想定し、物理ページ「0x00000000」から「0x000003FF」までの領域を使用して書き込まれるものとする。コントローラファームウェアの実行コードが書き込まれない物理ページに対しては、その物理ページ内のメモリセル全てに対してフォーミング処理が実行される。
図17は、本技術の実施の形態におけるメモリ300の物理ページについてフォーミング処理が実行された後の例を示す図である。この例では、コントローラファームウェアが記憶されている物理ページアドレス「0x00000000」から「0x000003FF」まで以外の領域について、フォーミング処理が実行済であることを示している。したがって、この例では、コントローラファームウェアが記憶されている物理ページについては高抵抗リード閾値を使用してリードを行い、それ以外の物理ページについては通常リード閾値を使用してリードを行うことになる。
[動作]
図18は、本技術の実施の形態におけるメモリ300のライトリクエスト処理の処理手順例を示す流れ図である。ライトコマンド処理として、メモリコントローラ200はメモリ300にライトリクエストを指示する。これにより、リクエスト処理部360は、以下の手順によりライト動作を行う。
リクエスト処理部360は、メモリコントローラ200から制御インターフェース309を経由して、ライトリクエストと物理ページアドレスを受信すると、物理ページライト処理を開始する。物理ページライト処理の開始の際には、メモリセルアレイ310に書き込まれるライトデータは、制御インターフェース309からライトデータバッファ341に転送されて保持されている。
リクエスト処理部360は、物理ページリセット処理を実行する(ステップS920)。その後、リクエスト処理部360は、ステップS920で実行された物理ページリセット処理が正常に終了したか否かを判定する(ステップS911)。このとき、正常終了しなかった場合には(ステップS911:No)、リクエスト処理部360は、物理ページライト処理がエラー終了したことを、制御インターフェース309を介してメモリコントローラ200に通知する(ステップS914)。
物理ページリセット処理が正常に終了した場合には(ステップS911:Yes)、リクエスト処理部360は、物理ページセット処理を実行する(ステップS940)。その後、リクエスト処理部360は、ステップS940で実行された物理ページセット処理が正常に終了したか否かを判定する(ステップS912)。このとき、正常終了しなかった場合には(ステップS912:No)、リクエスト処理部360は、物理ページライト処理がエラー終了したことを、制御インターフェース309を介してメモリコントローラ200に通知する(ステップS914)。
物理ページセット処理が正常に終了した場合には(ステップS912:Yes)、リクエスト処理部360は、物理ページライト処理が正常終了したことを、制御インターフェース309を介してメモリコントローラ200に通知する(ステップS913)。
図19は、本技術の実施の形態におけるメモリ300の物理ページリセット処理(ステップS920)の処理手順の一例を示す流れ図である。
リセット処理では、メモリコントローラ200から指定されたメモリセルをHRSにする。HRSにするメモリセルの情報は、リセット処理開始前に、メモリコントローラ200から、4224ビット(528バイト)のビット列のデータとして、制御インターフェース309経由で受信し、ライトデータバッファ341に保持される。物理ページアドレスは、リセット処理開始前に、メモリコントローラ200から、制御インターフェース309経由で受信し、リクエスト処理部360に保持される。
リクエスト処理部360は、プレート制御部320、ロウ制御部311、リード制御部332に制御信号を供給し、指定された物理ページアドレスからデータを読み出す(ステップS921)。読み出されたデータは、プレリードデータとしてリードデータバッファ342に転送されて保持される。
リクエスト処理部360は、リードデータバッファ342に保持されたプレリードデータと、ライトデータバッファ341に保持されているライトデータとをビット単位で比較し、リセット処理を実行するメモリセルを特定する(ステップS922)。リセット処理を実行するメモリセルは、ライトデータバッファ341に保持されたデータの値が「0」であり、かつ、リードデータバッファ342に保持されたデータの値が「1」となっているメモリセルである。これは、対応するメモリセルが、「1」(低抵抗状態)から「0」(高抵抗状態)に状態を変化させる必要があることを意味する。リセット処理を実行するメモリセルの情報として、リセット処理を実行するメモリセルに対応するビットの値に「1」、リセット処理を実行する必要のないセルに対応するビットの値に「0」とし、データをベリファイバッファ343に保持する。
リクエスト処理部360は、リセットおよび検証の繰返し実行回数をカウントするためのカウンタkの値を「1」に設定する(ステップS923)。
リクエスト処理部360は、リセット処理を実行するグループ番号を決定するためのカウンタiの値に「1」に設定する(ステップS924)。
リクエスト処理部360は、プレート制御部320、ロウ制御部311、ライト制御部331に制御信号を供給するとともに、ベリファイバッファ343からリセットを実行するセルの特定情報をカラム制御部312に供給する。これにより、メモリセルアレイ310に対してリセットパルスを印加して、リセット動作を行う(ステップS925)。ここで、リセットパルスを印加するメモリセルは、指定された物理ページアドレス内の第iグループに属するメモリセルのうち、リセット処理を実行するセルである。
リクエスト処理部360は、リセット動作を行ったグループ番号を示すカウンタiの値が「66」であるか否かを判定する(ステップS926)。カウンタiの値が「66」でなければ(ステップS926:No)、カウンタiに「1」を加算した後に(ステップS927)、ステップS925以降の処理を繰り返す。一方、カウンタiの値が「66」となった場合には、グループ毎のリセット動作を終了する(ステップS926:Yes)。
リクエスト処理部360は、リセット動作を検証するため、プレート制御部320、ロウ制御部311、リード制御部332に制御信号を供給して、リセットパルスを印加した物理ページアドレスからデータを読み出す(ステップS931)。読み出したデータは、リードデータバッファ342に転送されて保持される。
リクエスト処理部360は、検証処理部350に制御信号を供給して、リードデータバッファ342に保持されているデータと、ライトデータバッファ341に保持されているライトデータとをビット単位で比較して検証処理を実行する(ステップS932)。検証処理の対象となるビットは、ライトデータバッファ341に保持されたデータの値が「0」を示すビットである。ライトデータバッファ341に保持されたデータの値が「0」で、かつ、リードデータバッファ342に保持された値が「1」のビットは検証失敗となる。ライトデータバッファ341に保持されたデータの値が「0」で、かつ、リードデータバッファ342に保持された値が「0」のビットは検証成功となる。その結果、検証失敗となったビットに「1」、検証成功となったビットに「0」、それ以外のビットに「0」の値がセットされたものがベリファイバッファ343に保持される。
ベリファイバッファ343に保持されたデータの全てのビットが「0」を示す場合、全体が検証処理に成功したものとして(ステップS933:Yes)、検証処理部350はその旨をリクエスト処理部360に通知して、物理ページリセット処理を正常終了する。
一方、ベリファイバッファ343に保持されたデータの何れかのビットが「1」を示す場合、全体として検証処理に成功していないものとして(ステップS933:No)、リセット処理のリトライ動作が行われる。その際、カウンタkの値が参照され、カウンタkの値が「4」になっている場合には(ステップS934:Yes)、それ以上のリトライ動作を行わずに物理ページリセット処理をエラー終了する。カウンタkの値が「4」になっていない場合には(ステップS934:No)、カウンタkの値に「1」を加算して(ステップS935)、ステップS924以降の処理を繰り返す。
図20は、本技術の実施の形態におけるメモリ300の物理ページセット処理(ステップS940)の処理手順の一例を示す流れ図である。
この物理ページセット処理は、図19により説明した物理ページリセット処理と同様の手順となっている。ただし、物理ページリセット処理ではステップS922においてリセット対象となるメモリセルを特定していたが、この物理ページリセット処理ではステップS942においてセット対象となるメモリセルを特定する。そして、その特定されたセット対象について、ステップS945においてグループ毎のセット処理が行われる。それ以外の点については、図19により説明した物理ページリセット処理と同様であるため、詳細な説明は省略する。
図21は、本技術の実施の形態におけるメモリ300の通常リードリクエスト処理の処理手順の一例を示す流れ図である。
リクエスト処理部360は、メモリコントローラ200から制御インターフェース309経由で、通常リードリクエストと物理ページアドレスを受信すると、通常リードリクエストの処理を開始する。物理ページアドレスは、制御インターフェース309からリクエスト処理部360に転送され、保持されている。通常リードリクエストの処理では、4224ビット(528バイト)のデータが、メモリ300からメモリコントローラ200に転送される。
リクエスト処理部360は、プレート制御部320、ロウ制御部311およびリード制御部332に、通常リード閾値の抵抗をリファレンス抵抗として、「0」か「1」かの判別を行うよう指示する制御信号を供給する。これにより、指定された物理ページアドレスから4224ビット(528バイト)のデータが読み出される(ステップS961)。読み出されたデータは、リードデータバッファ342に転送されて、保持される。
リクエスト処理部360は、リードデータバッファ342に保持されている4224ビット(528バイト)のデータを、制御インターフェース309経由で、メモリコントローラ200に転送する(ステップS962)。
図22は、本技術の実施の形態におけるメモリ300の高抵抗リードリクエスト処理の処理手順の一例を示す流れ図である。
リクエスト処理部360は、メモリコントローラ200から制御インターフェース309経由で、高抵抗リードリクエストと物理ページアドレスを受信すると、高抵抗リードリクエストの処理を開始する。物理ページアドレスは、制御インターフェース309からリクエスト処理部360に転送され、保持されている。高抵抗リードリクエストの処理では、通常リードリクエストの処理と同様に、4224ビット(528バイト)のデータが、メモリ300からメモリコントローラ200に転送される。
リクエスト処理部360は、プレート制御部320、ロウ制御部311およびリード制御部332に、高抵抗リード閾値の抵抗をリファレンス抵抗として、「0」か「1」かの判別を行うよう指示する制御信号を供給する。これにより、指定された物理ページアドレスから4224ビット(528バイト)のデータが読み出される(ステップS963)。読み出されたデータは、リードデータバッファ342に転送されて、保持される。
リクエスト処理部360は、リードデータバッファ342に保持されている4224ビット(528バイト)のデータを、制御インターフェース309経由で、メモリコントローラ200に転送する(ステップS964)。
図23は、本技術の実施の形態におけるメモリコントローラ200の電源投入時のファームウェアロード処理の処理手順の一例を示す流れ図である。メモリコントローラ200に電源が投入されたことを検出すると、ファームウェアロード部250は、ファームウェアロード処理を開始する。
この第1の実施の形態では、物理ページアドレス「0x00000000」から「0x000003FF」までは、コントローラファームウェアが書き込まれていることを想定する。そして、このコントローラファームウェアが書き込まれている領域を高抵抗リード領域として設定し、それ以外の領域を通常リード領域と設定する。
ファームウェアロード部250は、ROM230からリード領域識別情報に相当する情報を読み出して、リード領域識別情報222としてRAM220に展開する(ステップS811)。すなわち、リード領域識別情報222は、物理ページアドレス「0x00000000」から「0x000003FF」までが高抵抗リード領域であることを示し、それ以外の領域が通常リード領域であることを示す。
また、ファームウェアロード部250は、ROM230からファームウェア領域情報に相当する情報を読み出して、ファームウェア領域情報223としてRAM220に展開する(ステップS812)。すなわち、ファームウェア領域情報223物理ページアドレス「0x00000000」から「0x000003FF」までにコントローラファームウェアが書き込まれていることを示す。
そして、ファームウェアロード部250は、メモリ300からコントローラファームウェアを読み出して、RAM220に展開する(ステップS820)。このファームウェアリード処理の内容については、以下に説明する。
図24は、本技術の実施の形態におけるメモリコントローラ200のファームウェアリード処理(ステップS820)の処理手順の一例を示す流れ図である。
ファームウェアロード部250は、ファームウェア領域情報223に基づいて、コントローラファームウェアの実行コードが記録されているメモリ300の物理ページの中から、データのリードを行う対象となる物理ページを選択する(ステップS821)。この場合の選択としては、例えば、値の小さい物理ページアドレスから順に行うことが考えられる。
ファームウェアロード部250は、選択された物理ページを指定して、リードリクエストをメモリ300に対して発行して、データをリードする(ステップS822)。このとき、リード領域識別情報222が高抵抗リード領域であることを示しているため、リードリクエストとして、高抵抗リードリクエストを発行する。なお、コントローラファームウェアについては常に高抵抗リードリクエストを発行するものと定義している場合には、リード領域識別情報222を参照することなく高抵抗リードリクエストを発行してよい。
ファームウェアロード部250は、リードされたデータに対して、ECC処理部240においてエラー検出訂正処理を行う(ステップS823)。エラーが検出されなければそのままのデータ、エラーが検出された場合にはそのエラー訂正が行われたデータを、ファームウェアロード部250はRAM220に転送する。
ファームウェアロード部250は、コントローラファームウェアの実行コードが記録されている全ての物理ページからデータをリードしたか否かを判定する(ステップS825)。データリードをしていない物理ページが存在する場合には(ステップS825:No)、ステップS821からの処理を繰り返す。全ての物理ページからデータをリードした場合は(ステップS825:Yes)、このファームウェアリード処理を終了する。
図25は、本技術の第1の実施の形態におけるメモリコントローラ200のリードコマンド処理の処理手順の一例を示す流れ図である。メモリコントローラ200のプロセッサ210は、ホストコンピュータ100からコマンドを受け取ると、そのコマンドの種別を解釈して、対応する処理を行う。ここでは、そのコマンドがリードコマンドであった場合の手順を示している。このリードコマンド処理は、プロセッサ210のコマンド実行タスクによって処理される。
プロセッサ210は、ホストインターフェース201で受信したリード対象の先頭論理アドレスとデータサイズとに基づいて、論理アドレス単位に処理を分割する(ステップS831)。1回の処理で実行されるのは1論理アドレスである。例えば、リード対象の先頭アドレスとして「0」、データサイズとして「1」が指定された場合は、1回の処理が行われる。また、リード対象の先頭論理アドレスとして「0」、データサイズとして「2」が指定された場合には、2回の処理に分割される。
プロセッサ210は、リード対象とする論理アドレスを決定する(ステップS832)。対象となる論理アドレスは、リード対象の先頭論理アドレスから順番に決定される。リード対象の先頭論理アドレスとして「0」、データサイズとして「2」が指定された場合、最初に処理を実行する論理アドレスは「0」に決定される。そして、次に対象となる論理アドレスは「1」に決定される。
プロセッサ210は、リード対象として決定した論理アドレスを、RAM220内に保持しているアドレス変換テーブル221を使用して物理アドレスに変換する(ステップS833)。ステップS832において決定された論理アドレスに対応する物理アドレスが割り当てられていない場合には(ステップS833:No)、ホストコンピュータ100にオールゼロのデータが送信される(ステップS838)。すなわち、プロセッサ210が、ホストインターフェース201を経由して、512バイトの全てが「0x00」であるデータをホストコンピュータ100に転送する。一方、ステップS832において決定された論理アドレスに対応する物理アドレスが割り当てられている場合には(ステップS833:Yes)、以下のステップS834以降の処理を行う。
プロセッサ210は、変換した物理アドレスを指定して、メモリ300に対してリードリクエストを要求する(ステップS834)。メモリ300から読み出されるデータは、未使用領域と冗長ビットを含めた4224ビット(528バイト)である。
メモリ300から読み出されたデータは、ECC処理部240に転送されて、ECC処理部240で保持される。ECC処理部240では、528バイトのデータから、エラー検出を行う(ステップS835)。このとき、エラーが検出され、かつ、エラービット数が訂正可能なビット数を超えている場合には(ステップS836:No)、プロセッサ210は、エラー終了した旨をホストコンピュータ100に通知する(ステップS842)。一方、エラーが検出されず、または、エラービット数が訂正可能なビット数を超えていない場合には(ステップS836:Yes)、プロセッサ210は、制御インターフェース309経由でデータをホストコンピュータ100に転送する(ステップS837)。このとき、転送されるデータは、528バイトのデータのうちエラー訂正コードを除いた512バイトのデータであり、ステップS835においてエラー訂正が行われた場合には、転送されるのは訂正後のデータである。
ステップS837またはS838においてデータをホストコンピュータ100に転送した後、プロセッサ210は、必要な転送が終了したか否かを判断する。すなわち、このリードコマンド処理においてホストコンピュータ100に転送されたデータサイズの合計と、このリードコマンドで指定されたデータサイズとが一致するか否かを判定する(ステップS839)。転送されたデータサイズの合計が、指定されたデータサイズよりも少ない場合には(ステップS839:No)、ステップS832以降の処理を繰り返す。転送されたデータサイズの合計が、指定されたデータサイズに達した場合には(ステップS839:Yes)、ホストコンピュータ100に対してコマンドの正常終了を通知する(ステップS841)。
図26は、本技術の第1の実施の形態におけるメモリコントローラ200のライトコマンド処理の処理手順の一例を示す流れ図である。このライトコマンド処理は、プロセッサ210のコマンド実行タスクによって処理される。
プロセッサ210は、ホストインターフェース201で受信したライト対象の先頭論理アドレスとデータサイズとに基づいて、論理アドレス単位に処理を分割する(ステップS851)。そして、プロセッサ210は、ライト対象とする論理アドレスを決定する(ステップS852)。対象となる論理アドレスは、ライト対象の先頭論理アドレスから順番に決定される。
プロセッサ210は、ライト対象として決定した論理アドレスを、RAM220内に保持しているアドレス変換テーブルを使用して物理アドレスに変換する(ステップS853)。ステップS852において決定された論理アドレスに対応する物理アドレスが割り当てられていない場合には(ステップS853:No)、プロセッサ210は、未割当物理ページ情報224から未使用の物理ページアドレスを取得する(ステップS854)。未使用の物理ページアドレスは、値の小さいアドレスから順に選択される。そして、プロセッサ210は、アドレス変換テーブル221のうち、ステップS852において決定された論理アドレスに対応する物理ページアドレスの値を、ステップS854において取得された物理ページアドレスに更新する(ステップS854)。
プロセッサ210は、ホストインターフェース201を経由して、ホストコンピュータ100から512バイトのライトデータを受信する(ステップS855)。そして、プロセッサ210は、ホストコンピュータ100から受信した512バイトのデータに対して、ECC処理部240で、16バイトのエラー訂正コードを付加する(ステップS856)。
プロセッサ210は、ステップS853またはS854で変換された物理ページアドレスを指定して、メモリ300にライトリクエストを発行して、528バイトのデータを書き込む(ステップS857)。ライトリクエストが正常に終了した場合(ステップS858:Yes)、プロセッサ210は、指定されたライト処理が終了したか否かを判断する。すなわち、このライトコマンド処理においてメモリ300にライトされたデータサイズの合計と、このライトコマンドで指定されたデータサイズとが一致するか否かを判定する(ステップS859)。ライトされたデータサイズの合計が、指定されたデータサイズよりも少ない場合には(ステップS859:No)、ステップS852以降の処理を繰り返す。ライトされたデータサイズの合計が、指定されたデータサイズに達した場合には(ステップS859:Yes)、ホストコンピュータ100に対してコマンドの正常終了を通知する(ステップS861)。一方、ライトリクエストが正常に終了しなかった場合(ステップS858:No)、プロセッサ210は、エラー終了した旨をホストコンピュータ100に通知する(ステップS862)。
このように、本技術の第1の実施の形態では、フォーミング処理がされていないメモリセルを含む高抵抗リード領域をメモリ300に残し、通常リード閾値よりも高い高抵抗リード閾値を基準としてデータをリードする。これにより、時間経過やノイズによる影響を抑制して、信頼性の高いデータリードを行うことができる。
<2.第2の実施の形態>
上述の第1の実施の形態では、メモリシステム400の製造時または出荷時に、メモリ300に対して、コントローラファームウェアの書込みおよびフォーミング処理が実行されることを想定した。これに対して、この第2の実施の形態では、ページ内の全てのメモリセルをフォーミング処理されていない状態としたページ(未フォーミングページ)からなる未フォーミング領域を出荷時に残しておくことを想定する。
すなわち、この第2の実施の形態では、メモリコントローラ200がメモリインターフェース203を経由して、未使用の未フォーミングページにデータを書き込むためのセル選択フォーミングリクエストを、メモリ300に発行する機能を備える。これにより、コントローラファームウェアだけでなく、ホストコンピュータ100のアップデートコードや、アプリケーションプログラムの実行コード等を信頼性高く記憶することができる。
ホストコンピュータ100は、未使用の未フォーミング領域の使用状況の情報をメモリコントローラ200から取得して、必要に応じて、未フォーミング領域ライトコマンドを発行することにより、未使用の未フォーミングページにデータを書き込む。
なお、この第2の実施の形態における基本的な構成は上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
図27は、本技術の第2の実施の形態におけるメモリ300の物理ページの状態例を示す図である。この例では、第1の実施の形態と同様に、物理ページアドレス「0x00000000」から「0x000003FF」までの領域にはコントローラファームウェアが記憶されている。また、物理ページアドレス「0x00010000」から「0x01FFFFFF」までの領域においては全てのメモリセルがフォーミング処理されている。
一方、物理ページアドレス「0x00000400」から「0x0000FFFF」までの領域は、全てフォーミング処理されていない状態として残されている。このフォーミング処理されていない領域については、あとからフォーミング処理を行うことができる。
図28は、本技術の第2の実施の形態におけるメモリコントローラ200のRAM220に記憶される管理情報の例を示す図である。この例では、上述の第1の実施の形態において説明したものに加えて、高抵抗リード領域使用状況管理テーブル225が示されている。
高抵抗リード領域使用状況管理テーブル225は、メモリ300において高抵抗リード領域として使用されている領域および高抵抗リード領域として使用されていない領域を管理するためのテーブルである。メモリコントローラ200は、この高抵抗リード領域使用状況管理テーブル225を参照することにより、メモリ300のいずれの領域が高抵抗リード領域として使用されているか否かを知ることができる。
図29は、本技術の第2の実施の形態における高抵抗リード領域使用状況管理テーブル225の例を示す図である。この例では、コントローラファームウェアが記憶されている領域が、高抵抗リード領域として使用されている領域(使用済領域)として示されている。また、それ以外の領域が、高抵抗リード領域として使用されていない領域(未使用領域)として示されている。
この高抵抗リード領域使用状況管理テーブル225は、フォーミング処理が実行されるたびに、更新されていく。すなわち、フォーミング処理が実行された領域については、使用済領域として設定され、未使用領域から外される。
図30は、本技術の第2の実施の形態におけるリード領域識別情報222の例を示す図である。この例では、コントローラファームウェアが記憶されている領域および出荷時に未フォーミングページとして残された領域を高抵抗リード領域として設定し、それ以外の領域を通常リード領域と設定している。高抵抗リード領域として設定された領域について、高抵抗リード領域使用状況管理テーブル225が、使用済領域または未使用領域の何れであるかを示すことになる。
高抵抗リード領域使用状況管理テーブル225は、メモリシステム400の電源投入時に、メモリ300から読み出され、RAM220に展開される。ファームウェアロード部250がコントローラファームウェアをRAM220に展開すると、制御タスクが実行されて、高抵抗リード領域使用状況管理テーブル225がメモリ300から読み出される。コントローラファームウェアの初回起動時で、コントローラファームウェアがメモリ300に記録されていない場合には、高抵抗リード領域使用状況管理テーブル225が作成される。このとき、高抵抗リード領域使用状況管理テーブル225は、RAM220に展開されているリード領域識別情報222およびファームウェア領域情報223から作成される。
高抵抗リード領域使用状況管理テーブル225は、メモリシステム400の電源遮断時に、RAM220からメモリ300に書き込まれる。
[動作]
図31は、本技術の第2の実施の形態におけるメモリ300のセル選択フォーミングリクエスト処理の処理手順例を示す流れ図である。
リクエスト処理部360は、メモリコントローラ200から制御インターフェース309を経由して、セル選択フォーミングリクエストと物理ページアドレスを受信すると、セル選択フォーミングリクエスト処理を開始する。セル選択フォーミングリクエスト処理に必要な4224ビット(528バイト)のデータは、制御インターフェース309からライトデータバッファ341に転送され、保持されている。物理ページアドレスは、制御インターフェース309からリクエスト処理部360に転送され、保持されている。
リクエスト処理部360は、フォーミング電圧セット処理を実行する(ステップS993)。このフォーミング電圧セット処理は、図20により説明した物理ページセット処理と同様であるが、ステップS945においてセットパルスを印加する際の電圧を、より高いフォーミング電圧により行う点が異なる。
リクエスト処理部360は、フォーミング電圧セット処理が正常に終了したかを判別する(ステップS994)。正常終了した場合には(ステップS994:Yes)、リクエスト処理部360は、制御インターフェース309を介してメモリコントローラ200に、セル選択フォーミングリクエスト処理が正常に終了した旨を通知する(ステップS995)。一方、エラー終了した場合には(ステップS994:No)、リクエスト処理部360は、制御インターフェース309を介してメモリコントローラ200に、セル選択フォーミングリクエスト処理でエラーが発生した旨を通知する(ステップS995)。
図32は、本技術の第2の実施の形態におけるメモリコントローラ200の領域使用状況取得処理の処理手順例を示す流れ図である。メモリコントローラ200は、ホストコンピュータ100から未フォーミングページ使用状況取得コマンドを受信すると、以下の領域使用状況取得処理を開始する。この領域使用状況取得処理は、プロセッサ210上で動作するコマンド実行タスクにより実行される。
プロセッサ210は、高抵抗リード領域使用状況管理テーブル225から、未使用領域のサイズを取得する(ステップS871)。プロセッサ210は、取得した未使用領域のサイズを、ホストコンピュータ100に送信する(ステップS872)。そして、プロセッサ210は、未フォーミングページ使用状況取得コマンドの処理が正常に終了したことをホストコンピュータ100に通知する(ステップS873)。
図33は、本技術の第2の実施の形態におけるメモリコントローラ200の未フォーミング領域ライトコマンド処理の処理手順例を示す流れ図である。この未フォーミング領域ライトコマンド処理は、プロセッサ210のコマンド実行タスクによって処理される。
プロセッサ210は、ホストインターフェース201で受信したライト対象の先頭論理アドレスとデータサイズとに基づいて、論理アドレス単位に処理を分割する(ステップS861)。そして、プロセッサ210は、ライト対象とする論理アドレスを決定する(ステップS862)。対象となる論理アドレスは、ライト対象の先頭論理アドレスから順番に決定される。
プロセッサ210は、高抵抗リード領域使用状況管理テーブル225の情報から、未使用の未フォーミングページが存在するかを判別する(ステップS863)。未使用の未フォーミングページが存在しない場合には(ステップS863:No)、プロセッサ210は、ホストコンピュータ100に、未フォーミング領域ライトコマンドの処理においてエラーが発生した旨を通知する(ステップS873)。未使用の未フォーミングページが存在する場合には(ステップS863:Yes)、以下の処理を行う。
プロセッサ210は、高抵抗リード領域使用状況管理テーブル225から、未使用の物理ページアドレスを取得する(ステップS864)。未使用の物理ページアドレスは、値の小さい物理ページアドレスから使用する。取得した未使用の物理ページアドレスは、使用済みとなるため、高抵抗リード領域使用状況管理テーブル225は更新される。すなわち、高抵抗リード領域使用状況管理テーブル225において、「使用済領域」の「サイズ」の値がインクリメントされ、「未使用領域」の「サイズ」の値がデクリメントされる。また、「未使用領域」の「開始アドレス」の値がインクリメントされる。
プロセッサ210は、ホストインターフェース201を経由して、ホストコンピュータ100から512バイトのライトデータを受信する(ステップS865)。そして、プロセッサ210は、ホストコンピュータ100から受信したデータに対して、ECC処理部240で、16バイトのエラー訂正コードを付加する(ステップS866)。
プロセッサ210は、ステップS864において取得した物理ページアドレスを指定して、メモリ300にセル選択フォーミングリクエストを発行し(ステップS867)、ステップS866でエラー訂正コードを付加した528バイトのデータを書き込む。
プロセッサ210は、発行したセル選択フォーミングリクエストが正常に終了したか否かを判別する(ステップS868)。セル選択フォーミングリクエストが正常に終了しなかった場合には(ステップS868:No)、プロセッサ210は、ホストコンピュータ100に、未フォーミング領域ライトコマンドの処理においてエラーが発生した旨を通知する(ステップS873)。セル選択フォーミングリクエストが正常に終了した場合には(ステップS868:Yes)、以下の処理を行う。すなわち、プロセッサ210は、アドレス変換テーブル221のうち、ステップS862で選択された論理アドレスに対応する物理ページアドレスを、ステップS864において取得した物理ページアドレスに更新する(ステップS869)。その更新時に、ステップS862で選択された論理アドレスに対応する物理ページアドレスに、通常リード領域の物理ページアドレスが割り当てられている場合には、その割り当てられている物理ページアドレスを未割当物理ページ情報224に加える。
プロセッサ210は、指定されたライト処理が終了したか否かを判断する。すなわち、この未フォーミング領域ライトコマンド処理においてメモリ300にライトされたデータサイズの合計と、この未フォーミング領域ライトコマンドで指定されたデータサイズとが一致するか否かを判定する(ステップS871)。ライトされたデータサイズの合計が、指定されたデータサイズよりも少ない場合には(ステップS871:No)、ステップS862以降の処理を繰り返す。ライトされたデータサイズの合計が、指定されたデータサイズに達した場合には(ステップS871:Yes)、ホストコンピュータ100に対してコマンドの正常終了を通知する(ステップS872)。
図34は、本技術の第2の実施の形態におけるメモリコントローラ200のリードコマンド処理の処理手順の一例を示す流れ図である。このリードコマンド処理は、プロセッサ210のコマンド実行タスクによって処理される。
プロセッサ210は、ホストインターフェース201で受信したリード対象の先頭論理アドレスとデータサイズとに基づいて、論理アドレス単位に処理を分割する(ステップS881)。プロセッサ210は、リード対象とする論理アドレスを決定する(ステップS882)。そして、プロセッサ210は、リード対象として決定した論理アドレスを、RAM220内に保持しているアドレス変換テーブル221を使用して物理アドレスに変換する(ステップS883)。
プロセッサ210は、リード領域識別情報222を参照して、リード対象の物理アドレスが、通常リード領域または高抵抗リード領域の何れであるかを識別する(ステップS884)。通常リード領域であると識別した場合(ステップS884:通常)、プロセッサ210は、ステップS883で変換された物理アドレスを指定して、メモリ300に通常リードリクエストを発行する(ステップS885)。一方、高抵抗リード領域であると識別した場合(ステップS884:高抵抗)、プロセッサ210は、ステップS883で変換された物理アドレスを指定して、メモリ300に高抵抗リードリクエストを発行する(ステップS886)。
メモリ300から読み出されたデータは、ECC処理部240に転送されて、ECC処理部240で保持される。ECC処理部240では、528バイトのデータから、エラー検出を行う(ステップS887)。このとき、エラーが検出され、かつ、エラービット数が訂正可能なビット数を超えている場合には(ステップS888:No)、プロセッサ210は、エラー終了した旨をホストコンピュータ100に通知する(ステップS893)。一方、エラーが検出されず、または、エラービット数が訂正可能なビット数を超えていない場合には(ステップS888:Yes)、プロセッサ210は、制御インターフェース309経由でデータをホストコンピュータ100に転送する(ステップS889)。このとき、転送されるデータは、528バイトのデータのうちエラー訂正コードを除いた512バイトのデータであり、ステップS835においてエラー訂正が行われた場合には、転送されるのは訂正後のデータである。
データをホストコンピュータ100に転送した後、プロセッサ210は、必要な転送が終了したか否かを判断する。すなわち、このリードコマンド処理においてホストコンピュータ100に転送されたデータサイズの合計と、このリードコマンドで指定されたデータサイズとが一致するか否かを判定する(ステップS891)。転送されたデータサイズの合計が、指定されたデータサイズよりも少ない場合には(ステップS891:No)、ステップS882以降の処理を繰り返す。転送されたデータサイズの合計が、指定されたデータサイズに達した場合には(ステップS891:Yes)、ホストコンピュータ100に対してコマンドの正常終了を通知する(ステップS892)。
図35は、本技術の第2の実施の形態におけるメモリコントローラ200のライトコマンド処理の処理手順の一例を示す流れ図である。このライトコマンド処理は、プロセッサ210のコマンド実行タスクによって処理される。
プロセッサ210は、ホストインターフェース201で受信したライト対象の先頭論理アドレスとデータサイズとに基づいて、論理アドレス単位に処理を分割する(ステップS711)。そして、プロセッサ210は、ライト対象とする論理アドレスを決定する(ステップS712)。対象となる論理アドレスは、ライト対象の先頭論理アドレスから順番に決定される。
プロセッサ210は、ライト対象として決定した論理アドレスを、RAM220内に保持しているアドレス変換テーブルを使用して物理アドレスに変換する(ステップS713)。ステップS712において決定された論理アドレスに対応する物理アドレスが割り当てられている場合(ステップS713:Yes)、プロセッサ210は、リード領域識別情報222を参照して、ライト対象の物理アドレスが、通常リード領域または高抵抗リード領域の何れであるかを識別する(ステップS714)。このとき、高抵抗リード領域であると識別した場合には(ステップS714:Yes)、以下のステップS715の処理を実行する。また、ステップS712において決定された論理アドレスに対応する物理アドレスが割り当てられていない場合にも(ステップS713:No)、同様にステップS715の処理を実行する。
すなわち、プロセッサ210は、未割当物理ページ情報224から未使用の物理ページアドレスを取得する(ステップS715)。未使用の物理ページアドレスは、値の小さいアドレスから順に選択される。そして、プロセッサ210は、アドレス変換テーブル221のうち、ステップS712において決定された論理アドレスに対応する物理ページアドレスの値を、ステップS715において取得された物理ページアドレスに更新する(ステップS715)。
以下のステップS716以降の処理は、図26において説明したステップS855以降の処理と同様であるため、詳細な説明は省略する。
このように、本技術の第2の実施の形態では、未フォーミングページについて、メモリコントローラ200からセル選択フォーミングリクエストを発行して、選択したセルをLRSにフォーミングして、それ以外のセルを初期抵抗状態とする。これにより、高抵抗リード領域において、メモリシステム400の出荷後に信頼性の高いデータライトを行うことができる。
<3.第3の実施の形態>
上述の第2の実施の形態では、未フォーミングページの選択したセルのみをLRSにフォーミングすることにより、そのページを高抵抗リード領域として利用していた。この第3の実施の形態では、高抵抗リード領域のページの全てのセルについてフォーミング処理を行うことにより、通常リード領域として再利用する。
なお、この第3の実施の形態における基本的な構成は上述の第1の実施の形態と同様であるため、詳細な説明は省略する。
この第3の実施の形態では、高抵抗リード領域が可変となるため、メモリコントローラ200のRAM220に展開されたリード領域識別情報222は、メモリ300に記録される。リード領域識別情報222は、メモリシステム400の電源投入時に、メモリ300から読み出され、RAM220に展開される。コントローラファームウェアの初回起動時で、リード領域識別情報222がメモリ300に記録されていない場合には、ROM230からRAM220に展開される。
図36は、本技術の第3の実施の形態におけるリード領域識別情報222の遷移の一例を示す図である。
同図におけるaは、図30に示した第2の実施の形態のリード領域識別情報222と同様である。この第3の実施の形態では、例えば、高抵抗リード領域の物理ページ「0x00001000」を通常リード領域として変更した場合、同図におけるbのように、リード領域識別情報222が更新される。
[動作]
図37は、本技術の第3の実施の形態におけるメモリコントローラ200のライトコマンド処理の処理手順の一例を示す流れ図である。このライトコマンド処理は、プロセッサ210のコマンド実行タスクによって処理される。
この第3の実施の形態におけるライトコマンド処理は、図35により説明した第2の実施の形態におけるライトコマンド処理と基本的には同様の内容となっている。ただし、ライト対象となる物理ページアドレスが既に割当済であり(ステップS713:Yes)、かつ、そのページが高抵抗リード領域である場合に(ステップS714:Yes)、全セルフォーミング処理を行う点が異なる(ステップS730)。この全セルフォーミング処理により、高抵抗リード領域として使用されていた物理ページが、通常リード領域として使用されるようになる。すなわち、そのメモリセルは、リセット動作によりHRSに遷移し、セット動作によりLRSに遷移する。
図38は、本技術の第3の実施の形態におけるメモリコントローラ200の全セルフォーミング処理(ステップS730)の処理手順の一例を示す流れ図である。この全セルフォーミング処理は、プロセッサ210のコマンド実行タスクによって処理される。
プロセッサ210は、この全セルフォーミング処理の実行時に指定された物理ページアドレスを指定して、メモリ300に対して高抵抗リードリクエストを発行し、528バイトのデータの読出しを行う(ステップS731)。
プロセッサ210は、読み出されたデータに対して、ECC処理部240によってエラー訂正を行う(ステップS732)。その結果、エラー訂正が正常に終了しなかった場合には(ステップS733:No)、この全セルフォーミング処理をエラー終了する。エラーが検出されず、または、検出されたエラーが正常に訂正された場合には(ステップS733:Yes)、以下の処理が実行される。
プロセッサ210は、エラーが検出されなかったデータ、または、エラー訂正が正常に終了したデータについて、ビット単位で「0」を「1」に、「1」を「0」に反転させる(ステップS734)。そして、プロセッサ210は、データを読み出した物理ページアドレスを指定して、メモリ300にセル選択フォーミングリクエストを発行して、ステップS734において反転させたデータを書き込む(ステップS735)。すなわち、反転の結果が「1」となったセルに対してフォーミング処理を行う。
セル選択フォーミングリクエストが正常に終了しなかった場合には(ステップS736:No)、この全セルフォーミング処理をエラー終了する。セル選択フォーミングリクエストが正常終了した場合(ステップS736:Yes)、プロセッサ210は、フォーミング処理が実行されたページを、高抵抗リード領域から通常リード領域に変更するよう、リード領域識別情報222を更新する(ステップS737)。また、プロセッサ210は、フォーミング処理が実行されたページを、未割当物理ページ情報224に登録する(ステップS738)。
このように、本技術の第3の実施の形態では、ライト対象となる物理ページが高抵抗リード領域である場合には、ページ内の全てのセルがフォーミング済の状態となるようフォーミング処理を行う。これにより、高抵抗リード領域を通常リード領域として再利用することができる。
<4.第1の変形例>
ここまでに説明したように、高抵抗リード領域においては、エラーが発生する確率は十分に低いことが期待される。そこで、この第1の変形例では、メモリコントローラ200によるエラー訂正を前提とせずに、メモリ300において全セルフォーミングを行うことを想定する。すなわち、発生するビットエラーの期待値がECC処理部240の訂正能力と比較して十分小さく、例えば、エラー訂正能力が100ビットであるのに対してエラービットの期待値が1ビット程度である場合には、エラー訂正を省いても影響は少ないと考えられる。
この第1の変形例では、メモリコントローラ200からメモリ300に対して全セルフォーミングリクエストを発行し、メモリ300が自ら全セルフォーミングを行う。この場合、第3の実施の形態のライトコマンド処理において、ステップS731乃至S735の処理を、全セルフォーミングリクエストに置き換えて実行してもよい。
図39は、本技術の実施の形態の第1の変形例におけるメモリ300の全セルフォーミングリクエスト処理の処理手順の一例を示す流れ図である。
リクエスト処理部360は、プレート制御部320、ロウ制御部311およびリード制御部332に、高抵抗リード閾値の抵抗をリファレンス抵抗として、「0」か「1」かの判別を行うよう指示する制御信号を供給する。これにより、指定された物理ページアドレスから4224ビット(528バイト)のデータが読み出される(ステップS991)。読み出されたデータは、リードデータバッファ342に転送されて、保持される。
リクエスト処理部360は、リードデータバッファ342のデータを、ライトデータバッファ341に転送して、ビット単位で「0」を「1」に、「1」を「0」に反転させる(ステップS992)。
これ以降の処理は、図31において説明したステップS993乃至S996の処理と同様である。すなわち、通常の物理ページセット処理よりも高いフォーミング電圧によってセット処理が行われる。
このように、この第1の変形例によれば、メモリコントローラ200においてエラー訂正やビット反転などの処理を行うことを要せず、メモリ300において全セルフォーミングを行うことができる。
<5.第2の変形例>
上述の実施の形態では、リード領域識別情報222は、初回起動時にROM230から読み出されて展開されることを想定していた。これに対して、この第2の変形例では、リード領域識別情報222に相当する情報をホストコンピュータ100から供給する。そのため、この第2の変形例では、ホストコンピュータ100から転送されたリード領域識別情報222に相当する情報を受け付けるために、リード領域識別情報転送コマンドを設ける。
図40は、本技術の実施の形態の第2の変形例におけるメモリコントローラ200のリード領域識別情報転送コマンド処理の処理手順の一例を示す流れ図である。このリード領域識別情報転送コマンド処理は、プロセッサ210のコマンド実行タスクによって処理される。
プロセッサ210は、ホストインターフェース201を経由して、ホストコンピュータ100から、リード領域識別情報222に相当する情報を受信する(ステップS791)。すなわち、ホストインターフェース201は、特許請求の範囲に記載のインターフェースの一例である。プロセッサ210は、ホストコンピュータ100から受信したリード領域識別情報222に相当する情報を、リード領域識別情報222としてRAM220に展開する(ステップS792)。そして、プロセッサ210は、ホストコンピュータ100に対してリード領域識別情報転送コマンドの処理が正常に終了した旨を通知する(ステップS793)。
このように、この第2の変形例によれば、リード領域識別情報222をRAM220上に展開するための情報を、ホストコンピュータ100から供給することができる。
<6.第3の変形例>
上述の実施の形態では、ECC処理部240のエラー訂正能力を8ビットと想定し、512バイトのデータに対して16バイトのエラー訂正コードを付加して、通常リード領域および高抵抗リード領域に記憶していた。これに対して、通常リード領域および高抵抗リード領域の何れであるかに応じて、異なるエラー訂正能力を有するエラー訂正コードを用いることが考えられる。この第3の変形例では、高抵抗リード領域の信頼性が高いことに着目して、高抵抗リード領域に記憶させる際は、通常リード領域と比べてエラー訂正能力の低いエラー訂正コードを付加することを想定する。
例えば、高抵抗リード領域については、ECC処理部240のエラー訂正能力を2ビットとし、512バイトのデータに対して4バイトのエラー訂正コードを付加する。この場合、メモリ300の物理ページのサイズは528バイトであるため、12バイト分の余剰を生じることになるが、その部分は「0」を埋めることが考えられる。
このように、この第3の変形例によれば、高抵抗リード領域のエラー訂正コードのエラー訂正能力を低くすることにより、エラー訂正に要する時間を短縮することができ、高速なデータリードを行うことができる。特に、コントローラファームウェアのロードを高速化することにより、メモリシステム400を高速に起動することができるようになる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)それぞれが第1および第2の値の何れかを示す複数のメモリセルから構成されるメモリにおいて前記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れであるかを識別するためのリード領域識別情報を記憶するリード領域識別情報記憶部と、
前記リード領域識別情報に基づいて前記複数の領域の何れであるかを識別して当該識別された領域の前記リード基準に従ったリードを行うよう前記メモリに要求するリード要求部と
を具備するメモリコントローラ。
(2)前記メモリセルは抵抗変化型メモリであり、
前記リード基準は、前記メモリセルの抵抗状態を切り分けるためのリファレンス抵抗値である
前記(1)に記載のメモリコントローラ。
(3)前記複数の領域のうち第1の領域においては、フォーミング処理された前記メモリセルの抵抗状態と前記フォーミング処理がされていない前記メモリセルの抵抗状態とが第1のリファレンス抵抗値によって切り分けられ、
前記複数の領域のうち第2の領域においては、前記第1のリファレンス抵抗値よりも低い第2のリファレンス抵抗値によって2つの抵抗状態の何れかが切り分けられる
前記(2)に記載のメモリコントローラ。
(4)前記第1の領域においては前記第2の領域よりもエラー訂正能力の低いエラー訂正コードを用いてエラー訂正処理を行うエラー訂正処理部をさらに具備する前記(3)に記載のメモリコントローラ。
(5)前記第1の領域について前記フォーミング処理がされていない前記メモリセルに対して前記フォーミング処理を行って前記第2の領域に変化させる前記(3)に記載のメモリコントローラ。
(6)前記第1の領域にはコントローラファームウェアが記憶され、
前記第1の領域から読み出された前記コントローラファームウェアを実行する
前記(3)に記載のメモリコントローラ。
(7)前記リード領域識別情報記憶部は揮発性メモリから構成され、
前記リード領域識別情報を前記リード領域識別情報記憶部に供給するリード領域識別情報供給部をさらに具備する
前記(1)に記載のメモリコントローラ。
(8)前記リード領域識別情報供給部は、不揮発性メモリから構成されて前記リード領域識別情報を記憶する第2のリード領域識別情報記憶部である前記(7)に記載のメモリコントローラ。
(9)前記リード領域識別情報供給部は、外部から前記リード領域識別情報を受け取るインターフェースである前記(7)に記載のメモリコントローラ。
(10)それぞれが第1および第2の値の何れかを示す複数のメモリセルを具備し、
前記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れかに前記複数のメモリセルを区分する
メモリ。
(11)前記メモリセルは抵抗変化型メモリであり、
前記リード基準は、前記メモリセルの抵抗状態を切り分けるためのリファレンス抵抗値である
前記(10)に記載のメモリ。
(12)前記複数の領域のうち第1の領域においては、フォーミング処理された前記メモリセルの抵抗状態と前記フォーミング処理がされていない前記メモリセルの抵抗状態とが第1のリファレンス抵抗値によって切り分けられ、
前記複数の領域のうち第2の領域においては、前記第1のリファレンス抵抗値よりも低い2つの抵抗状態の何れかが第2のリファレンス抵抗値によって切り分けられる
前記(11)に記載のメモリ。
(13)前記第1の領域について前記フォーミング処理がされていない前記メモリセルに対して前記フォーミング処理を行って前記第2の領域に変化させる前記(12)に記載のメモリ。
(14)それぞれが第1および第2の値の何れかを示す複数のメモリセルを備えるメモリと、
前記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れであるかを識別するためのリード領域識別情報に基づいて前記複数の領域の何れであるかを識別して当該識別された領域の前記リード基準に従ったリードを行うよう前記メモリに要求するメモリコントローラと
を具備するメモリシステム。
100 ホストコンピュータ
102 コントローラインターフェース
110 プロセッサ
120 RAM
180 ホストバス
200 メモリコントローラ
201 ホストインターフェース
203 メモリインターフェース
210 プロセッサ
220 RAM
221 アドレス変換テーブル
222 リード領域識別情報
223 ファームウェア領域情報
224 未割当物理ページ情報
225 高抵抗リード領域使用状況管理テーブル
230 ROM
240 ECC処理部
250 ファームウェアロード部
300 メモリ
308 テストインターフェース
309 制御インターフェース
310 メモリセルアレイ
311 ロウ制御部
312 カラム制御部
313 メモリセル
314 アクセストランジスタ
315 可変セル抵抗
320 プレート制御部
331 ライト制御部
332 リード制御部
333 リフレッシュ制御部
340 バッファ
341 ライトデータバッファ
342 リードデータバッファ
343 ベリファイバッファ
350 検証処理部
360 リクエスト処理部
400 メモリシステム
3151 導電材料層
3152 イオン源層
3153 高抵抗層
3154 電極

Claims (14)

  1. それぞれが第1および第2の値の何れかを示す複数のメモリセルから構成されるメモリにおいて前記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れであるかを識別するためのリード領域識別情報を記憶するリード領域識別情報記憶部と、
    前記リード領域識別情報に基づいて前記複数の領域の何れであるかを識別して当該識別された領域の前記リード基準に従ったリードを行うよう前記メモリに要求するリード要求部と
    を具備するメモリコントローラ。
  2. 前記メモリセルは抵抗変化型メモリであり、
    前記リード基準は、前記メモリセルの抵抗状態を切り分けるためのリファレンス抵抗値である
    請求項1記載のメモリコントローラ。
  3. 前記複数の領域のうち第1の領域においては、フォーミング処理された前記メモリセルの抵抗状態と前記フォーミング処理がされていない前記メモリセルの抵抗状態とが第1のリファレンス抵抗値によって切り分けられ、
    前記複数の領域のうち第2の領域においては、前記第1のリファレンス抵抗値よりも低い第2のリファレンス抵抗値によって2つの抵抗状態の何れかが切り分けられる
    請求項2記載のメモリコントローラ。
  4. 前記第1の領域においては前記第2の領域よりもエラー訂正能力の低いエラー訂正コードを用いてエラー訂正処理を行うエラー訂正処理部をさらに具備する請求項3記載のメモリコントローラ。
  5. 前記第1の領域について前記フォーミング処理がされていない前記メモリセルに対して前記フォーミング処理を行って前記第2の領域に変化させる請求項3記載のメモリコントローラ。
  6. 前記第1の領域にはコントローラファームウェアが予め記憶され、
    前記第1の領域から読み出された前記コントローラファームウェアを実行する
    請求項3記載のメモリコントローラ。
  7. 前記リード領域識別情報記憶部は揮発性メモリから構成され、
    前記リード領域識別情報を前記リード領域識別情報記憶部に供給するリード領域識別情報供給部をさらに具備する
    請求項1記載のメモリコントローラ。
  8. 前記リード領域識別情報供給部は、不揮発性メモリから構成されて前記リード領域識別情報を記憶する第2のリード領域識別情報記憶部である請求項7記載のメモリコントローラ。
  9. 前記リード領域識別情報供給部は、外部から前記リード領域識別情報を受け取るインターフェースである請求項7記載のメモリコントローラ。
  10. それぞれが第1および第2の値の何れかを示す複数のメモリセルを具備し、
    前記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れかに前記複数のメモリセルを区分する
    メモリ。
  11. 前記メモリセルは抵抗変化型メモリであり、
    前記リード基準は、前記メモリセルの抵抗状態を切り分けるためのリファレンス抵抗値である
    請求項10記載のメモリ。
  12. 前記複数の領域のうち第1の領域においては、フォーミング処理された前記メモリセルの抵抗状態と前記フォーミング処理がされていない前記メモリセルの抵抗状態とが第1のリファレンス抵抗値によって切り分けられ、
    前記複数の領域のうち第2の領域においては、前記第1のリファレンス抵抗値よりも低い2つの抵抗状態の何れかが第2のリファレンス抵抗値によって切り分けられる
    請求項11記載のメモリ。
  13. 前記第1の領域について前記フォーミング処理がされていない前記メモリセルに対して前記フォーミング処理を行って前記第2の領域に変化させる請求項12記載のメモリ。
  14. それぞれが第1および第2の値の何れかを示す複数のメモリセルを備えるメモリと、
    前記第1および第2の値の何れであるかを切り分けるためのリード基準が互いに異なる複数の領域の何れであるかを識別するためのリード領域識別情報に基づいて前記複数の領域の何れであるかを識別して当該識別された領域の前記リード基準に従ったリードを行うよう前記メモリに要求するメモリコントローラと
    を具備するメモリシステム。
JP2015176787A 2015-09-08 2015-09-08 メモリコントローラ、メモリおよびメモリシステム Pending JP2017054248A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015176787A JP2017054248A (ja) 2015-09-08 2015-09-08 メモリコントローラ、メモリおよびメモリシステム
PCT/JP2016/068399 WO2017043149A1 (ja) 2015-09-08 2016-06-21 メモリコントローラ、メモリおよびメモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015176787A JP2017054248A (ja) 2015-09-08 2015-09-08 メモリコントローラ、メモリおよびメモリシステム

Publications (1)

Publication Number Publication Date
JP2017054248A true JP2017054248A (ja) 2017-03-16

Family

ID=58239711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015176787A Pending JP2017054248A (ja) 2015-09-08 2015-09-08 メモリコントローラ、メモリおよびメモリシステム

Country Status (2)

Country Link
JP (1) JP2017054248A (ja)
WO (1) WO2017043149A1 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164832B2 (en) * 2013-02-27 2015-10-20 Seagate Technology Llc ECC management for variable resistance memory cells
JP2015064918A (ja) * 2013-09-25 2015-04-09 マイクロン テクノロジー, インク. 半導体装置及びその書き込み方法

Also Published As

Publication number Publication date
WO2017043149A1 (ja) 2017-03-16

Similar Documents

Publication Publication Date Title
JP6149598B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
CN103995756B (zh) 存储控制器、存储设备、信息处理系统和存储控制方法
US11709632B2 (en) Input/output size control between a host system and a memory sub-system
JP5853906B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
EP2800097B1 (en) Storage control device, storage device, information processing system, and processing methods therefor
JP2020155052A (ja) メモリシステムおよび制御方法
JP2013092854A (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
JP2020502606A5 (ja)
JP2013222315A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2020047353A (ja) メモリシステム
EP2799998A1 (en) Storage control device, storage device, information processing system, and processing methods in same
JP6711281B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
JP6497395B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
KR20180087494A (ko) 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법
WO2017043149A1 (ja) メモリコントローラ、メモリおよびメモリシステム
JP5853843B2 (ja) 記憶制御装置、記憶装置、および、それらにおける処理方法
JPWO2016042902A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
US11262936B2 (en) Memory controller, storage device, information processing system, and memory control method
CN103530238A (zh) 存储控制设备、存储设备、信息处理系统及其处理方法
WO2016056290A1 (ja) メモリコントローラ、メモリシステム、記憶装置、情報処理システムおよび記憶制御方法
US20140195874A1 (en) Memory system
JP2019057340A (ja) メモリシステム及びメモリ制御方法
US11861225B2 (en) Management unit based media management operations in memory devices