[go: up one dir, main page]

JP5942781B2 - 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法 - Google Patents

記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法 Download PDF

Info

Publication number
JP5942781B2
JP5942781B2 JP2012237590A JP2012237590A JP5942781B2 JP 5942781 B2 JP5942781 B2 JP 5942781B2 JP 2012237590 A JP2012237590 A JP 2012237590A JP 2012237590 A JP2012237590 A JP 2012237590A JP 5942781 B2 JP5942781 B2 JP 5942781B2
Authority
JP
Japan
Prior art keywords
data
write
determination
bits
reference value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012237590A
Other languages
English (en)
Other versions
JP2013239142A (ja
Inventor
中西 健一
健一 中西
敬一 筒井
敬一 筒井
藤波 靖
靖 藤波
龍男 新橋
龍男 新橋
直大 足立
直大 足立
石井 健
健 石井
大久保 英明
英明 大久保
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2012237590A priority Critical patent/JP5942781B2/ja
Priority to US13/780,655 priority patent/US9361952B2/en
Priority to CN201310120350.7A priority patent/CN103377139B/zh
Publication of JP2013239142A publication Critical patent/JP2013239142A/ja
Application granted granted Critical
Publication of JP5942781B2 publication Critical patent/JP5942781B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

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

Description

本技術は、記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法に関する。詳しくは、不揮発性メモリを制御するための記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法に関する。
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ(NVM:Non-Volatile memory)が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistance RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
これらの不揮発性メモリの中には、ライト処理において、2値のうちの一方の値のビットの書き換えと他方の値の書換えとが順に行われるものがある。このような不揮発性メモリ(例えば、ReRAM)において、それぞれの書き換えにおける消費電力の最大値は、一般に書き換えるビット数が多いほど大きくなる。この最大消費電力を低減するために、反転したライトデータと、反転していないライトデータとのうち、書き換えるビット数の少ない方を選択して不揮発性メモリに書き込む半導体装置が提案されている(例えば、特許文献1参照。)。
上述の半導体装置は、書込み先のアドレスに既に書き込まれているデータを読み出し、そのデータをバッファに保持する。そして、半導体装置は、ライトデータを反転し、反転前後のライトデータの各々をバッファにさらに保持する。半導体装置は、反転前後のライトデータの各々と、読み出したデータとを比較し、反転前後のライトデータのうち、変化ビット数の少ない方を書き込む。反転したデータの書込みにより変化ビット数が少なくなる場合には消費電力の最大値が低減する。
国際公開第2006/106577号
しかしながら、上述の従来技術では、ライト処理の速度が低下してしまうという問題がある。上述の半導体装置では、書込み前に、読み出したデータと反転前後のライトデータとを比較する処理を実行する必要があり、この比較処理の分、書込み処理の速度が低下してしまう。一方、この比較処理を行わない構成とすると、半導体装置は、反転により変化ビット数が小さくなるのか否かを判断することができなくなってしまう。この場合は、反転したとしても、変化ビット数が反転前より多くなってしまうことがあるため、消費電力の最大値が低減しなくなってしまう。このため、最大消費電力を低減しつつ、書込み処理の速度の低下を抑制することができないという問題がある。
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリのライト処理の速度の低下を抑制しつつ、最大消費電力を低減することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルに対する入力データの少なくとも一部において上記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、上記ビット数が上記基準値を超えると判定された場合には上記少なくとも一部を反転した上記入力データをライトデータとして上記判定データとともに上記メモリセルへ出力するライト側出力部とを具備する記憶制御装置、および、その制御方法である。これにより、特定の値のビット数が基準値を超える場合には少なくとも一部を反転した入力データがライトデータとして出力されるという作用をもたらす。
また、この第1の側面において、上記基準値は、上記入力データの全ビットの数の半数であり、上記判定部は、上記全ビットのうち上記特定の値のビット数が上記基準値を超えるか否かを判定し、上記ライト側出力部は、上記ビット数が上記基準値を超えると判定された場合には上記入力データを反転して上記ライトデータとして出力し、上記ビット数が上記基準値を超えないと判定された場合には上記入力データを反転せずに上記ライトデータとして出力してもよい。これにより、特定の値のビット数が入力データの全ビットの数の半数を超える場合には反転した入力データがライトデータとして出力されるという作用をもたらす。
また、この第1の側面において、上記入力データは2つの部分からなり、上記判定部は、上記2つの部分のうちの一方の部分において上記ビット数が上記基準値を超えるか否かを判定し、上記基準値は、上記2つの部分のうちの他方の部分における上記特定の値のビット数であり、上記ライト側出力部は、上記ビット数が上記基準値を超えると判定された場合には上記一方の部分を反転した上記入力データを上記ライトデータとして出力し、上記ビット数が上記基準値を超えないと判定された場合には上記他方の部分を反転した上記入力データを上記ライトデータとして出力してもよい。これにより、特定の値のビット数が入力データの総ビット数の半数を超える場合には一方の部分を反転したデータがライトデータとして出力されるという作用をもたらす。
また、この第1の側面において、データと当該データに対応する上記判定データとを上記メモリセルから取得するデータ取得部と、上記ビット数が上記基準値を超えることを上記判定データが示す場合には上記取得されたデータにおいて上記少なくとも一部を反転してリードデータとして出力するリード側出力部とをさらに具備してもよい。これにより、ビット数が基準値を超えることを判定データが示す場合には上記取得されたデータにおいて上記少なくとも一部が反転されてリードデータとして出力されるという作用をもたらす。
また、この第1の側面において、上記リードデータと当該リードデータに対応する上記判定データとを保持するバッファをさらに具備し、上記ライト側出力部は、上記リードデータおよび上記判定データを上記バッファから読み出して上記ビット数が上記基準値を超えることを上記判定データが示す場合には上記少なくとも一部を反転した上記リードデータを上記ライトデータとして出力してもよい。これにより、リードデータと判定データとがバッファに保持され、ビット数が基準値を超えることを判定データが示す場合には上記取得されたデータにおいて上記少なくとも一部が反転されてリードデータとして出力されるという作用をもたらす。
また、この第1の側面において、上記リードデータを保持するバッファをさらに具備し、上記多数ビット判定部は、上記リードデータを上記バッファから読み出して上記リードデータの少なくとも一部において上記特定の値のビット数が上記基準値を超えるか否かをさらに判定して上記判定データを生成し、上記ライト側反転部は、上記ビット数が上記基準値を超えることを上記判定データが示す場合には上記少なくとも一部を反転した上記リードデータを上記ライトデータとしてさらに出力してもよい。これにより、リードデータがバッファに保持され、ビットが基準値より多いか否かがさらに判定されるという作用をもたらす。
また、この第1の側面において、上記メモリセルから通知されたデータサイズに基づいて上記入力データの全ビットの数を変更するデータサイズ変更部をさらに具備し、上記多数ビット判定部は、上記変更された上記ビットの数に応じて上記基準値を変更してもよい。これにより、入力データの総ビット数の変更に応じて基準値が変更されるという作用をもたらす。
また、この第1の側面において、上記多数ビット判定部は、上記対象データにおいて上記特定の値のビット数を計数して当該計数値を上記基準値と比較することにより上記特定の値のビット数が上記基準値より多いか否かを判定してもよい。これにより、入力データにおいて特定の値のビット数が計数されて、その計数値が基準値と比較されるという作用をもたらす。
また、本技術の第2の側面は、ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルと、上記メモリセルに対する入力データの少なくとも一部において上記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、上記ビット数が上記基準値を超えると判定された場合には上記少なくとも一部を反転した上記入力データをライトデータとして上記判定データとともに上記メモリセルへ出力するライト側出力部とを具備するメモリシステムである。これにより、特定の値のビット数が基準値を超える場合には少なくとも一部を反転した入力データがライトデータとして出力されるという作用をもたらす。
また、本技術の第3の側面は、入力データのライト処理を指示するライトコマンドを発行するホストコンピュータと、上記ライト処理において2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルと、上記入力データの少なくとも一部において上記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、上記ビット数が上記基準値を超えると判定された場合には上記少なくとも一部を反転した上記入力データをライトデータとして上記判定データとともに上記メモリセルへ出力するライト側出力部とを具備する情報処理システムである。これにより、特定の値のビット数が基準値を超える場合には少なくとも一部を反転した入力データがライトデータとして出力されるという作用をもたらす。
本技術によれば、不揮発性メモリのライト処理の速度の低下を抑制しつつ、最大消費電力を低減することができるという優れた効果を奏し得る。
第1の実施の形態における情報処理システムの一構成例を示すブロック図である。 第1の実施の形態におけるNVRAMのアクセス単位の一例を示す図である。 第1の実施の形態におけるページのデータ構造の一例を示す図である。 第1の実施の形態におけるライト処理部の一構成例を示すブロック図である。 第1の実施の形態におけるリード処理部の一構成例を示すブロック図である。 第1の実施の形態におけるライト処理時に転送されるデータの一例を示す図である。 第1の実施の形態におけるリード処理時に転送されるデータの一例を示す図である。 第1の実施の形態におけるメモリシステムの動作の一例を示すフローチャートである。 第1の実施の形態におけるメモリ制御部側ライト処理の一例を示すフローチャートである。 第1の実施の形態における多数ビット判定処理の一例を示すフローチャートである。 第1の実施の形態におけるライト側反転処理の一例を示すフローチャートである。 第1の実施の形態におけるNVRAM側ライト処理の一例を示すフローチャートである。 第1の実施の形態におけるメモリ制御部側リード処理の一例を示すフローチャートである。 第1の実施の形態におけるエラー検出訂正処理の一例を示すフローチャートである。 第1の実施の形態におけるリード側反転処理の一例を示すフローチャートである。 第1の実施の形態におけるNVRAM側リード処理の一例を示すフローチャートである。 第1の実施の形態におけるデータを反転して書き込む具体例を示す図である。 第1の実施の形態における変化ビット数が最大となるライト処理の具体例を示す図である。 第1の実施の形態における変形例のページのデータ構造の一例を示すブロック図である。 第2の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。 第2の実施の形態におけるデータサイズ取得時に転送されるデータの一例を示す図である。 第3の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。 第3の実施の形態におけるライト処理部の一構成例を示すブロック図である。 第3の実施の形態におけるリード処理部の一構成例を示すブロック図である。 第4の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。 第4の実施の形態におけるライト処理部の一構成例を示すブロック図である。 第4の実施の形態におけるリード処理部の一構成例を示すブロック図である。 第5の実施の形態におけるライト処理部の一構成例を示すブロック図である。 第5の実施の形態における反転対象ビット列判定部の一構成例を示すブロック図である。 第5の実施の形態におけるデータおよび判定ビットの一例を示す図である。 第5の実施の形態における奇数ビット列および偶数ビット列のいずれかを反転したデータの一例を示す図である。 第5の実施の形態におけるリード処理部の一構成例を示すブロック図である。 第5の実施の形態におけるメモリ制御部側ライト処理の一例を示すフローチャートである。 第5の実施の形態における反転対象ビット列判定処理の一例を示すフローチャートである。 第5の実施の形態におけるライト側部分反転処理の一例を示すフローチャートである。 第5の実施の形態におけるメモリ制御部側リード処理の一例を示すフローチャートである。 第5の実施の形態におけるリード側部分反転処理の一例を示すフローチャートである。 第5の実施の形態の変形例におけるライト処理部の一構成例を示すブロック図である。 第5の実施の形態の変形例におけるメモリ制御部側ライト処理の一例を示すフローチャートである。 第5の実施の形態の変形例における反転対象ビット列判定処理の一例を示すフローチャートである。 第5の実施の形態の変形例におけるデータ転送処理の一例を示すフローチャートである。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(特定の値のビット数に応じてライトデータを反転する例)
2.第2の実施の形態(設定されたデータサイズのライトデータを反転する例)
3.第3の実施の形態(ページバッファに保持されたライトデータを反転する例)
4.第4の実施の形態(ページバッファに保持されたライトデータ内の「0」ビット数に応じてライトデータを反転する例)
5.第5の実施の形態(ライトデータの一部を反転する例)
6.変形例(ライトデータの一部を反転してから判定ビットを生成する例)
<1.第1の実施の形態>
[情報処理システムの構成例]
図1は、実施の形態における情報処理システムの一構成例を示すブロック図である。この情報処理システムは、ホストコンピュータ300およびメモリシステムを備える。このメモリシステムは、メモリ制御部100およびNVRAM200を備える。
ホストコンピュータ300は、メモリシステムを制御するものである。具体的には、ホストコンピュータ300は、コマンドを発行して、そのコマンド、アドレス、および、データをメモリ制御部100に信号線309を介して供給する。また、ホストコンピュータ300は、メモリシステムからデータおよびステータスを受け取る。ここで、コマンドは、メモリシステムを制御するためのものであり、例えば、データのライト処理を指示するライトコマンドと、データのリード処理を指示するリードコマンドとを含む。アドレスは、NVRAM200内のデータの格納場所を示すものである。データは、メモリシステムに入力されるデータ、または、メモリシステムから読み出されたリードデータである。ステータスは、コマンドの実行結果やメモリシステムの状況を通知する情報である。
メモリ制御部100は、NVRAM200を制御するものである。このメモリ制御部100は、ホストインターフェース110、ライト処理部120、リード処理部130およびメモリインターフェース140を備える。なお、メモリ制御部100は、特許請求の範囲に記載の記憶制御装置の一例である。
ホストインターフェース110は、ホストコンピュータ300との間でコマンド、アドレス、データ、および、ステータスなどをやりとりするインターフェースである。
ホストインターフェース110は、コマンドおよびアドレスをホストコンピュータ300から受け取った場合には、そのコマンドをデコードする。デコードしたコマンドがライトコマンドである場合には、ホストインターフェース110は、ライトコマンドおよびアドレスをライト処理部120に信号線128を介して供給する。一方、リードコマンドである場合には、ホストインターフェース110は、リードコマンドおよびアドレスをリード処理部130に信号線138を介して供給する。
また、ホストインターフェース110は、ホストコンピュータ300から受け取ったデータをライト処理部120に供給し、リード処理部130から受け取ったリードデータをホストコンピュータ300へ転送する。さらに、ホストインターフェース110は、ライト処理部120およびリード処理部130を介して、ステータスを受け取った場合には、そのステータスをホストコンピュータ300へ転送する。ホストインターフェース110としては、例えば、SATA(Serial Advanced Technology Attachment)、PCI Expressなどを利用することができる。
ライト処理部120は、ライトデータをNVRAM200に書き込むためのライト処理を実行するものである。ライト処理部120は、ホストインターフェース110を介してライトコマンド、アドレスおよびデータを受け取った場合には、それらのライトコマンドおよびアドレスをメモリインターフェース140に供給する。そして、ライト処理部120は、n(例えば、16×8)ビットのデータが入力されるたびに、そのデータにおいて2値のうちの特定の値(例えば「0」)のビットの数を計数する。ライト処理部120は、計数したビット数をn/2と比較することにより、特定の値のビットが多数ビットであるか否かを判定する。ここで、多数ビットは、「0」の値のビットと「1」の値のビットとのうち、nビットのデータにおいて、ビット数がn/2より多いビットである。「0」および「1」の各々のビット数が等しい場合は、多数ビットはないものとされ、特定の値(例えば、「0」)のビットは多数ビットでないと判定される。ライト処理部120は、判定結果を示す判定ビットを生成する。ライト処理部120は、計数したビット数がn/2より多いの(すなわち、多数ビットが「0」)であれば、データを反転する。ライト処理部120は、反転後または反転前のデータをライトデータとして、そのライトデータおよび判定ビットについてエラー訂正コード(ECC:Error Correcting Code)を生成する。ライト処理部120は、エラー訂正コードおよび判定ビットからなるデータを冗長データとして、ライトデータおよび冗長データをメモリインターフェース140に信号線129を介して供給する。なお、ライト処理部120は、データ内の「0」のビット数を計数して計数値がn/2より多いか否かを判定しているが、データ内の「1」のビット数を計数して、n/2より多いか否かを判定してもよい。
また、ライト処理部120は、メモリインターフェース140から受け取ったステータスをホストインターフェース110に供給する。
リード処理部130は、データをNVRAM200から読み出すためのリード処理を実行するものである。リード処理部130は、ホストインターフェース110を介してリードコマンドおよびアドレスを受け取った場合には、それらをメモリインターフェース140に供給する。そして、メモリインターフェース140を介してデータおよび冗長データを受け取った場合には、その冗長データ内の判定ビットから、多数ビットが「0」である否かを判断する。多数ビットが「0」であると判定された場合には、リード処理部130は、データを反転する。リード処理部130は、反転前または反転後のデータをリードデータとしてホストインターフェース110に信号線138を介して供給する。
また、リード処理部130は、メモリインターフェース140から受け取ったステータスをホストインターフェース110に供給する。
メモリインターフェース140は、NVRAM200との間でコマンド、アドレス、データ、および、ステータスなどをやりとりするインターフェースである。具体的には、メモリインターフェース140は、ライト処理部120から受け取ったコマンド、アドレスおよびデータをNVRAM200に信号線106、107および108を介して転送する。そして、メモリインターフェース140は、NVRAM200から信号線109を介して転送されたステータスをライト処理部120に供給する。また、メモリインターフェース140は、リード処理部130から受け取ったコマンドおよびアドレスをNVRAM200に転送し、NVRAM200から転送されたデータおよびステータスをリード処理部130に供給する。なお、メモリインターフェース140は、特許請求の範囲に記載のデータ取得部の一例である。
NVRAM200は、制御インターフェース210、NVRAM制御部220およびメモリセルアレイ230を備える。
制御インターフェース210は、メモリ制御部100との間でコマンド、アドレス、データ、および、ステータスなどをやりとりするインターフェースである。
NVRAM制御部220は、NVRAM200全体を制御するものである。具体的には、NVRAM制御部220は、制御インターフェース210を介してライトコマンド、アドレス、および、ライトデータを受け取った場合には、そのアドレスに書き込まれているデータを既書き込みデータとして読み出す。この読出しは、プレリードと呼ばれる。NVRAM制御部220は、ライトデータと既書き込みデータとをビット単位で比較し、ライトデータにおいて「1」であり、かつ、既書き込みデータにおいて「0」のビットを書き換え対象とする。NVRAM制御部220は、それらの書き換え対象のビットを「1」に書き換える。以下、この処理をリセット処理と称する。次に、NVRAM制御部220は、ライトデータとセット処理後の既書き込みデータとをビット単位で比較し、ライトデータにおいて「0」であり、かつ、既書き込みデータにおいて「1」のビットを書き換え対象とする。NVRAM制御部220は、それらの書き換え対象のビットを「0」に書き換える。以下、この処理をセット処理と称する。また、NVRAM制御部220は、制御インターフェース210を介して冗長データを受け取った場合には、ライトデータを書き込む場合と同様の手順で書き込みを行う。
なお、NVRAM制御部220は、リセット処理の後にセット処理を行っているが、セット処理の後にリセット処理を実行してもよい。また、「1」を「0」に書き換える処理をセット処理とし、「0」を「1」に書き換える処理をセット処理としているが、これらの処理の名称は、リセット処理およびセット処理に限らない。例えば、セット処理に相当する処理は消去処理とも呼ばれる。また、リセット処理に相当する処理はプログラム処理とも呼ばれる。
また、制御インターフェース210を介してリードコマンドおよびアドレスを受け取った場合には、NVRAM制御部220は、メモリセルアレイ230内の対応するアドレスからデータを読み出してメモリ制御部100に転送する。
また、NVRAM制御部220は、NVRAM200の状況やライトコマンドの実行結果を記載したステータスを生成してメモリ制御部100に転送する。
メモリセルアレイ230は、配列された複数のメモリセルを備える。各々のメモリセルとして、例えば、ReRAMが用いられる。なお、ライト処理においてセット処理およびリセット処理の各々が順に実行される不揮発性メモリであれば、ReRAM以外の不揮発性メモリをメモリセルアレイ230において用いてもよい。
図2は、第1の実施の形態におけるNVRAM200のアクセス単位の一例を示す図である。図2に示すように、NVRAM200内のメモリセルアレイ230は複数のページから構成される。各々のページの格納場所には、所定のページアドレスが割り当てられる。
図3は、第1の実施の形態におけるページのデータ構造の一例を示す図である。各々のページは、ユーザデータ、および、その冗長データを含む。ユーザデータは、所定サイズの複数のデータから構成される。例えば、ユーザデータは、16バイトの8個のデータからなる128バイトのデータである。一方、冗長データは、判定データおよびエラー訂正コードを含む。判定データは、ユーザデータ内の複数のデータに対応する複数の判定ビットから構成されるものである。これらの判定ビットは、特定の値(例えば、「0」)のビットがn/2より多いか否かを示すものである。例えば、ユーザデータが8個のデータからなる場合、判定データは、それらのデータに対応する8個の判定ビットから構成される。エラー訂正コードは、ユーザデータおよび判定データにおけるエラーを検出し、訂正するためのデータである。
[ライト処理部の構成例]
図4は、第1の実施の形態におけるライト処理部120の一構成例を示すブロック図である。このライト処理部120は、多数ビット判定部121、ページバッファ122、ライト側反転部123、および、ECC生成部124を備える。
多数ビット判定部121は、ユーザデータ内のデータの各々において、2値のうちの特定の値(例えば、「0」)のビット数を計数してn/2と比較することにより、その特定の値のビットが多数ビットであるか否かを判定するものである。多数ビット判定部121は判定結果を示す判定ビットを生成し、データと、そのデータに対応する判定ビットとをページバッファ122に保持させる。例えば、「0」のビット数がn/2より多い(多数ビットが「0」である)場合には「0」の判定ビットが生成され、「0」のビット数がn/2以下である(多数ビットが「0」でない)場合には「1」の判定ビットが生成される。なお、多数ビット判定部121は、特許請求の範囲に記載の判定部の一例である。
ページバッファ122は、複数のデータ、および、それらの判定ビットを含むページを保持するものである。
ライト側反転部123は、ページバッファ122に保持されたデータを、その判定ビットに基づいて、必要に応じて反転するものである。ライト側反転部123は、まず、データと、その判定ビットとをページバッファ122から読み出す。そして、ライト側反転部123は、多数ビットが「0」であることを判定ビットが示す場合にはデータを反転してライトデータとし、そうでない場合には反転しないデータをライトデータとする。ライト側反転部123は、複数のライトデータからなるユーザデータと、複数の判定ビットからなる判定データとをECC生成部124およびメモリインターフェース140に供給する。なお、ライト側反転部123は、特許請求の範囲に記載のライト側出力部の一例である。
ECC生成部124は、ユーザデータおよび判定データについてエラー訂正コードを生成するものである。ECC生成部124は、生成したエラー訂正コードをメモリインターフェース140に供給する。
[リード処理部の構成例]
図5は、第1の実施の形態におけるリード処理部130の一構成例を示すブロック図である。このリード処理部130は、リード側反転部131、ページバッファ132、および、エラー検出訂正部133を備える。
エラー検出訂正部133は、冗長データ内のエラー訂正コードを使用して、ユーザデータおよび判定データにおけるエラーを検出し、訂正可能であれば訂正するものである。エラー検出訂正部133は、エラー検出および訂正を行ってから、ユーザデータおよび判定データをページバッファ132に保持させる。
ページバッファ132は、ユーザデータおよび判定データを含むページを保持するものである。
リード側反転部131は、ページバッファ132に保持されたデータを、その判定ビットに基づいて、必要に応じて反転するものである。リード側反転部131は、まず、データと、その判定ビットとをページバッファ132から読み出す。そして、リード側反転部131は、反転前のデータにおける多数ビットが「0」であったことを判定ビットが示す場合にはデータを反転してリードデータとし、そうでない場合には反転していないデータをリードデータとする。リード側反転部131は、リードデータを含むユーザデータをホストインターフェース110に供給する。なお、リード側反転部131は、特許請求の範囲に記載のリード側出力部の一例である。
図6は、第1の実施の形態におけるライト処理時に転送されるデータの一例を示す図である。メモリ制御部100は、信号線106および107を介して、ライトコマンドおよびページアドレスをNVRAM200に転送する。そして、メモリ制御部100は、ユーザデータから判定データおよびエラー訂正コードを生成し、それらを含むページをNVRAM200に信号線108を介して転送する。NVRAM200は、転送されたページを、ページアドレスに書き込み、その書き込み処理の結果を記載したステータスをメモリ制御部100に信号線109を介して転送する。このように、ライト処理においては、ライトコマンドと、ページアドレスと、ユーザデータ等とがメモリ制御部100からNVRAM200へ転送され、次いで、NVRAM200からメモリ制御部100へステータスが転送される。
図7は、第1の実施の形態におけるリード処理時に転送されるデータの一例を示す図である。メモリ制御部100は、信号線106および107を介して、リードコマンドおよびページアドレスをNVRAM200に転送する。NVRAM200は、ページアドレスから、ユーザデータ、判定データおよびエラー訂正コードを含むページを読み出す。NVRAM200は、読み出したページと、読み出し処理の結果を記載したステータスとをメモリ制御部100に信号線108および109を介して転送する。このように、リード処理においては、リードコマンド、および、ページアドレスがメモリ制御部100からNVRAM200へ転送され、次いで、NVRAM200からメモリ制御部100へ、ユーザデータ等とステータスとが転送される。
[メモリシステムの動作例]
図8は、第1の実施の形態におけるメモリシステムの動作の一例を示すフローチャートである。この動作は、例えば、ホストコンピュータ300によりメモリシステムに対して初期化が指示されたときに開始する。
NVRAM200は、メモリセルアレイ230内の全ビットを「1」の値に初期化する(ステップS901)。メモリ制御部100は、ホストコンピュータ300からのコマンドをデコードする(ステップS902)。メモリ制御部100は、ホストコンピュータ300からコマンドを受け取った場合に、そのコマンドがライトコマンドであるか否かを判断する(ステップS903)。ここでは、ホストコンピュータ300からのコマンドは、ライトコマンドおよびリードコマンドのうちのいずれかであるものとする。なお、NVRAM200は、全ビットを「1」の値に初期化しているが、「0」の値に初期化してもよい。この場合、メモリ制御部100は、「1」のビットが多数ビットであるか否かを判定すればよい。
ライトコマンドである場合には(ステップS903:Yes)、メモリ制御部100は、メモリ制御部側ライト処理を実行する(ステップS910)。そして、NVRAM200は、NVRAM側ライト処理を実行する(ステップS940)。
一方、リードコマンドである場合には(ステップS903:No)、メモリ制御部100は、メモリ制御部側リード処理を実行する(ステップS960)。そして、NVRAM200は、NVRAM側リード処理を実行する(ステップS990)。ステップS940またはS990の後、メモリ制御部100は、ステップS902に戻る。
図9は、第1の実施の形態におけるメモリ制御部側ライト処理の一例を示すフローチャートである。メモリ制御部100は、特定の値のビットが多数ビットであるか否かを判定するための多数ビット判定処理を実行する(ステップS920)。次いで、メモリ制御部100は、必要に応じてデータを反転するためのライト側反転処理を実行する(ステップS930)。ステップS930の後、メモリ制御部100は、メモリ制御部側ライト処理を終了する。
図10は、第1の実施の形態における多数ビット判定処理の一例を示すフローチャートである。メモリ制御部100における多数ビット判定部121は、ページ内のいずれかのnビットのデータを選択する(ステップS921)。多数ビット判定部121は、選択したデータ内の「0」のビット数を計数する(ステップS922)。多数ビット判定部121は、選択したデータをページバッファ122に保持する(ステップS923)。そして、多数ビット判定部121は、「0」のビット数がn/2より多い(すなわち、多数ビットが「0」である)か否かを判定する(ステップS924)。計数値がn/2より多い場合には(ステップS924:Yes)、多数ビット判定部121は、多数ビットが「0」であることを示す「0」の値の判定ビットを生成し、その判定ビットをページバッファ122に保持する(ステップS925)。一方、計数値がn/2以下である場合には(ステップS924:No)、多数ビット判定部121は、多数ビットが「0」でないことを示す「1」の値の判定ビットを生成し、その判定ビットをページバッファ122に保持する(ステップS926)。
ステップS925またはS926の後、多数ビット判定部121は、ページ内の全データをページバッファ122に保持したか否かを判断する(ステップS927)。全データを保持していない場合には(ステップS927:No)、多数ビット判定部121は、ステップS921に戻る。一方、全データを保持した場合には(ステップS927:Yes)、多数ビット判定部121は、多数ビット判定処理を終了する。
図11は、第1の実施の形態におけるライト側反転処理の一例を示すフローチャートである。メモリ制御部100におけるライト側反転部123は、ページ内のいずれかのデータと、その判定ビットとをページバッファ122から読み出す(ステップS931)。ライト側反転部123は、判定ビットが「0」(すなわち、多数ビットが「0」)であるか否かを判断する(ステップS932)。
判定ビットが「0」である場合には(ステップS932:Yes)、ライト側反転部123は、データを反転してライトデータとしてNVRAM200に転送する(ステップS933)。そして、ライト側反転部123は、反転したデータおよび判定ビットについてエラー訂正コードを生成する(ステップS934)。
一方、判定ビットが「1」である場合には(ステップS932:No)、ライト側反転部123は、データをライトデータとしてNVRAM200に転送する(ステップS935)。そして、ライト側反転部123は、データおよび判定ビットについてエラー訂正コードを生成する(ステップS936)。
ステップS934またはS936の後、ライト側反転部123は、ページ内の全データをNVRAM200に転送したか否かを判断する(ステップS937)。全データを転送していない場合には(ステップS937:No)、ライト側反転部123はステップS931に戻る。全データを転送した場合には(ステップS937:Yes)、ライト側反転部123は、判定データおよびエラー訂正コードを含む冗長データをNVRAM200に転送する(ステップS938)。ステップS938の後、ライト側反転部123は、ライト側反転処理を終了する。
図12は、第1の実施の形態におけるNVRAM側ライト処理の一例を示すフローチャートである。NVRAM200は、ページ内のライトデータまたは冗長データを取得する(ステップS941)。NVRAM200は、書き込み先のページアドレスに書き込まれているデータを既書き込みデータとしてプレリードする(ステップS942)。NVRAM200は、ライトデータまたは冗長データと、既書き込みデータとにおいて対応するビットを比較し、リセットマスクデータを生成する(ステップS943)。このリセットマスクデータは、ライトデータまたは冗長データにおいて「1」であり、かつ、既書き込みデータにおいて「0」であるビットについてはリセットする旨を示し、それ以外のビットについてはマスクする旨を示す。
NVRAM200は、リセットマスクデータによりリセットする旨が示されたビットのみを「0」から「1」に書き換える処理(リセット処理)を行う(ステップS944)。NVRAM200は、リセット処理後の既書き込みデータを読み出し、エラーが生じたか否かを判断する(ステップS945)。
エラーが生じなかった場合には(ステップS945:No)、NVRAM200は、ライトデータまたは冗長データと、リセット処理後の既書き込みデータとにおいて対応するビットを比較し、セットマスクデータを生成する(ステップS946)。このセットマスクデータは、ライトデータまたは冗長データにおいて「0」であり、かつ、既書き込みデータにおいて「1」であるビットについてはセットする旨を示し、それ以外のビットについてはマスクする旨を示す。
NVRAM200は、セットマスクデータによりセットする旨が示されたビットのみを「1」から「0」に書き換える処理(セット処理)を行う(ステップS947)。NVRAM200は、セット処理後の既書き込みデータを読み出し、エラーが生じたか否かを判断する(ステップS948)。
リセット処理においてエラーが発生した場合(ステップS945:Yes)、または、セット処理においてエラーが発生した場合(ステップS948:Yes)、NVRAM200は、ステータスにおけるエラーフラグをオンにする(ステップS949)。このエラーフラグは、書き込み処理においてエラーが生じたか否かを示す情報であり、初期状態においてはオフが設定される。セット処理においてエラーが発生していない場合(ステップS948:No)、または、ステップS949の後、NVRAM200は、メモリ制御部100にステータスを転送する(ステップS950)。ステップS950の後、NVRAM200は、NVRAM側ライト処理を終了する。
図13は、第1の実施の形態におけるメモリ制御部側リード処理の一例を示すフローチャートである。メモリ制御部100は、データ内のエラーを検出し、訂正するためのエラー検出訂正処理を実行する(ステップS970)。次いで、メモリ制御部100は、必要に応じてデータを反転するためリード側反転処理を実行する(ステップS980)。ステップS980の後、メモリ制御部100は、メモリ制御部側リード処理を終了する。
図14は、第1の実施の形態におけるエラー検出訂正処理の一例を示すフローチャートである。メモリ制御部100におけるエラー検出訂正部133は、データおよび判定データとエラー訂正コードとをNVRAM200から取得する(ステップS971)。エラー検出訂正部133は、エラー訂正コードを使用して、データおよび判定データにおけるエラーを検出する(ステップS972)。そして、エラー検出訂正部133は、データおよび判定データにおいてエラーがあるか否かを判断する(ステップS973)。
エラーがある場合には(ステップS973:Yes)、エラー検出訂正部133は、そのエラーを訂正することができるか否かを判断する(ステップS974)。エラーを訂正することができる場合には(ステップS974:Yes)、エラー検出訂正部133は、データまたは判定データにおけるエラーを訂正する(ステップS975)。エラーを訂正することができない場合には(ステップS974:No)、エラー検出訂正部133は、ホストコンピュータ300にエラーを通知する(ステップS976)。例えば、エラー検出訂正部133は、NVRAM200から転送されたステータスにおいてエラーフラグをオンにして、ホストコンピュータ300に転送することによりエラーを通知する。
エラーがない場合(ステップS973:No)、または、ステップS975、あるいは、ステップS976の後、エラー検出訂正部133は、エラー検出訂正処理を終了する。
図15は、第1の実施の形態におけるリード側反転処理の一例を示すフローチャートである。メモリ制御部100におけるリード側反転部131は、ページ内のいずれかのデータと、その判定ビットとを選択する(ステップS981)。リード側反転部131は、判定ビットが「0」(すなわち、多数ビットが「0」)であるか否かを判断する(ステップS982)。
判定ビットが「0」である場合には(ステップS982:Yes)、リード側反転部131は、データを反転してリードデータとしてホストコンピュータ300へ転送する(ステップS983)。一方、判定ビットが「1」である場合には(ステップS982:No)、リード側反転部131は、データを反転しないままでリードデータとしてホストコンピュータ300へ転送する(ステップS984)。
ステップS983またはS984の後、リード側反転部131は、ページ内の全データを転送したか否かを判断する(ステップS985)。全データを転送していない場合には(ステップS985:No)、リード側反転部131はステップS981に戻る。一方、全データを転送した場合には(ステップS985:Yes)、リード側反転部131は、リード側反転処理を終了する。
図16は、第1の実施の形態におけるNVRAM側リード処理の一例を示すフローチャートである。NVRAM200は、リードコマンドとともに受け取ったページアドレスから、ページを読み出す(ステップS991)。NVRAM200は、読み出したページをメモリ制御部100へ転送する(ステップS992)。ステップS992の後、NVRAM200は、NVRAM側リード処理を終了する。
図17は、第1の実施の形態におけるデータを反転して書き込む具体例を示す図である。「0b00000111」のデータAが、メモリシステムに入力された場合について考える。この場合、メモリ制御部100は、この8ビットのデータAにおける「0」の値のビット数を計数する。この例では、「0」のビット数(「5」)は、データAの総ビット数の半数(「4」)より多い。このため、メモリ制御部100は、「0」のビットが多数ビットであることを示す「0」の値の判定ビットを生成する。そして、メモリ制御部100は、データAを反転した「0b11111000」をライトデータAとしてNVRAM200へ転送する。
NVRAM200において、ライトデータAの書込み先のページアドレスには「0b111111111」が書き込まれており、その判定ビットの書込み先には「1」が書き込まれているものとする。
NVRAM200は、ライトデータおよび判定ビットと、既に書き込まれたデータおよび判定ビットとを比較し、リセット処理を実行する。この例では、セット処理により書き換えられるビットはない。
次いで、NVRAM200は、ライトデータおよび判定ビットと、既に書き込まれたデータおよび判定ビットとを比較し、セット処理を実行する。このセット処理により、既書き込みデータは「0b11111000」に書き換えられ、判定ビットは「0」に書き換えられる。
ここで、仮にデータAを反転しないままで書き込み処理を行う構成とすると、「0」のビット数が総ビット数の半数より多い場合には、セット処理またはリセット処理において、その半数より多いビットの書き換えが生じうる。例えば、データAを反転しない場合、NVRAM200は、リセット処理において半数(4)より多い5ビットを書き換える必要がある。しかし、図17に例示したように、「0」のビットが多数ビットであるデータをメモリ制御部100が反転するため、セット処理およびリセット処理の各々において、nビットのデータ内で書き換えるビット数はn/2以下に抑制される。このため、セット処理およびリセット処理の各々における消費電力の最大値が、反転しない場合よりも低減する。
図18は、第1の実施の形態における変化ビット数が最大となるライト処理の具体例を示す図である。ライト処理における変化ビット数が最大となるのは、n個の全てのビットがセット処理またはリセット処理において書き換えられる場合である。そのケースの一例として、「0b00001111」のデータBが、メモリシステムに入力された場合について考える。この例では、「0」のビット数(「4」)は、データBの総ビット数の半数(「4」)以下である。このため、メモリ制御部100は、「0」のビットが多数ビットでないことを示す「1」の値の判定ビットを生成する。そして、メモリ制御部100は、データBを反転しないでライトデータBとしてNVRAM200へ転送する。
NVRAM200において、ライトデータBの書込み先のページアドレスには「0b11110000」の既書き込みデータが書き込まれており、その判定ビットの書込み先には「1」が書き込まれているものとする。この場合、この既書き込みデータとライトデータBとにおける対応するビットの全てが異なる値であるため、既書き込みデータにおいて8ビットの全てが書き換えられる。
NVRAM200は、ライトデータおよび判定ビットと、既に書き込まれたデータおよび判定ビットとを比較し、リセット処理を実行する。このリセット処理により、5ビット目から8ビット目までの4ビットが書き換えられて、既書き込みデータは、「0b11111111」に更新される。なお、判定ビットは書き換えられない。
次いで、NVRAM200は、ライトデータおよび判定ビットと、リセット処理後の既書き込みデータおよび判定ビットとを比較し、セット処理を実行する。このセット処理により、先頭から4ビット目までの4ビットが書き換えられて、既書き込みデータは、「0b00001111」に更新される。なお、判定ビットは書き換えられない。
前述したように、「0」のビットが多数ビットであるとデータが反転されるため、ライトデータにおいて、「0」のビット数は常に総ビット数nの半数以下となる。このため、図18に例示したように、セット処理およびリセット処理の合計の変化ビット数がn/2より多い場合でもあっても、セット処理およびリセット処理のそれぞれでは、変化ビット数がn/2(「4」)以下となる。したがって、ライト処理における消費電力の最大値が低減する。これに対して、「0」が多数ビットであるデータを反転しない構成とすると、セット処理およびリセット処理の各々における変化ビット数が、n/2以下にならないことがある。例えば、「0b00000000」のライトデータを反転しないで、「0b11111111」が記憶されているアドレスに書き込む場合、リセット処理において変化ビット数が総ビット数n(「8」)となってしまう。しかし、メモリ制御部100が、ライトデータの特定の値(例えば、「0」)のビット数がn/2以下になるように必要に応じてデータを反転すれば、セット処理およびリセット処理の各々における変化ビット数がn/2以下に抑制される。この結果、反転しない場合よりも消費電力の最大値が低減する。
なお、メモリシステムは、図3に例示したように、複数の判定ビットをまとめて、ユーザデータに付加しているが、図19に例示するように、判定ビットを分散してデータに付加してもよい。
また、情報処理システムは、図4に例示したように多数ビット判定部121およびライト側反転部123をメモリ制御部100内に備える構成としているが、この構成に限定されない。多数ビット判定部121およびライト側反転部123の両方または一方をホストコンピュータ300やNVRAM200内に設ける構成としてもよい。また、情報処理システムは、図5に例示したようにリード側反転部131をメモリ制御部100内に備える構成としているが、ホストコンピュータ300やNVRAM200内に設ける構成としてもよい。
また、多数ビット判定部121は、「0」および「1」のそれぞれのデータ保持特性に関りなく、特定の値のビット数を計数して、その計数値がn/2を超えるか否かを判定している。しかし、「0」および「1」のそれぞれのデータ保持特性が異なる場合には、多数ビット判定部121は、データ保持特性が低い方の値のビット数を計数してもよい。このデータ保持特性は、一般に、一定の温度条件においてデータを保持し続けることができる時間により表わされる。例えば、ある不揮発性メモリが70℃以下で10年間に渡ってデータを保持することが保証される場合には、その不揮発性メモリのデータ保持特性は、70℃以下において10年と表わされる。そして、保証される時間が長いほど、また、保証される温度が高いほど、データ保持特性が高いと評価される。具体的には、加速試験などによりNVRAM200の「0」のデータ保持特性と「1」のデータ保持特性とを予め測定しておき、多数ビット判定部121が計数する特定の値のビットを、データ保持特性の低い方の値(例えば「0」)のビットに設定すればよい。nビットのデータにおいて、その特定の値のビット数がn/2を超えていれば、ライト側反転部123により、そのデータが反転されるため、データ保持特性の低い値のビット数がデータ保持特性の高い値のビット数以下に抑制される。この結果、NVRAM200のデータ保持特性が改善される。
このように、本技術の第1の実施の形態によれば、メモリ制御部100は、特定の値のビットが多数ビットであるデータを反転するため、セット処理またはリセット処理における変化ビット数を総ビット数の半数以下に抑制することができる。これにより、セット処理およびリセット処理のそれぞれにおける最大消費電力が、反転しない場合よりも低減される。最大消費電力の低減により、電源回路の規模を小さくすることができ、NVRAM200を小型化することができる。また、メモリ制御部100は、既書き込みデータを読み出して、書き込むデータと比較する必要がないため、ライト処理の速度の低下が抑制される。したがって、メモリシステムは、ライト処理における速度の低下を抑制しつつ、最大消費電力を低減することができる。
<2.第2の実施の形態>
[メモリ制御部の構成例]
図20は、第2の実施の形態におけるメモリ制御部100の一構成例を示すブロック図である。第2の実施の形態におけるメモリ制御部100は、NVRAM200の仕様に応じて、データサイズを変更することができる点において第1の実施の形態と異なる。具体的には、第2の実施の形態のメモリ制御部100は、データサイズ変更部150をさらに備える。
データサイズ変更部150は、判定対象のデータのデータサイズ(nビット)を変更するものである。このデータサイズ変更部150は、データの書き込みを開始する前に、データサイズを取得するためのデータサイズ取得コマンドを発行し、メモリインタ−フェース140を介してNVRAM200に転送する。NVRAM200は、そのデータサイズ取得コマンドに応じて、ページサイズと、ページ内の個々のデータのデータサイズとをメモリ制御部100に通知する。データサイズ変更部150は、通知されたサイズに基づいて、ライト処理部120およびリード処理部130におけるページサイズおよびデータサイズの設定を変更する。
図21は、第2の実施の形態におけるデータサイズ取得時に転送されるデータの一例を示す図である。メモリ制御部100は、データサイズ取得コマンドを発行してNVRAM200に信号線106を介して転送する。NVRAM200は、そのデータサイズ取得コマンドに応じてページサイズおよびデータサイズをメモリ制御部100に信号線108を介して転送する。
このように、第2の実施の形態によれば、メモリ制御部100は、NVRAM200から通知されたサイズに応じてデータサイズを変更することができる。これにより、メモリ制御部100は、アクセス単位の異なる複数の種類のNVRAM200に対応することができる。
<3.第3の実施の形態>
[メモリ制御部の構成例]
図22は、第3の実施の形態におけるメモリ制御部100の一構成例を示すブロック図である。第3の実施の形態におけるメモリ制御部100は、ページバッファの構成を変更した点において第1の実施の形態と異なる。具体的には、メモリ制御部100が、ライト処理部120およびリード処理部130により共有されるページバッファ160をさらに備える点において第1の実施の形態と異なる。
ページバッファ160は、リードデータと、その判定ビットとを保持するものである。あるページアドレスに書き込まれたデータを、別のページアドレスにコピーする場合、ホストコンピュータ300は、コピーを指示するコマンドをメモリ制御部100に転送する。リード処理部130は、そのコマンドにより指示されたコピー元のページアドレスにおけるデータおよび判定ビットをNVRAM200から受け取り、必要に応じてデータを反転する。リード処理部130は、反転前または反転後のデータをリードデータとして、判定ビットとともにページバッファ160に保持させる。ライト処理部120は、ページバッファ160からリードデータおよび判定ビットを読み出し、必要に応じてデータを反転する。ライト処理部120は、反転前または反転後のリードデータをライトデータとして、判定ビットとともにNVRAM200に転送する。NVRAM200により、コピー先のページアドレスにライトデータおよび判定ビットが書き込まれる。
[ライト処理部の構成例]
図23は、第3の実施の形態におけるライト処理部120の一構成例を示すブロック図である。第3の実施形態のライト処理部120は、ページバッファ122を備えない点において第1の実施の形態と異なる。ライト処理部120における多数ビット判定部121は、ユーザデータおよび判定データをページバッファ122の代わりにページバッファ160に保持する。ライト側反転部123は、ページバッファ160に保持されたユーザデータおよび判定データを読み出し、判定データに基づいて、必要に応じてデータを反転する。
[リード処理部の構成例]
図24は、第3の実施の形態におけるリード処理部130の一構成例を示すブロック図である。第3の実施形態のリード処理部130は、ページバッファ132を備えない点において第1の実施の形態と異なる。リード処理部130におけるエラー検出訂正部133は、ページバッファ132を介さないで、リード側反転部131にユーザデータおよび判定データを供給する。リード側反転部131は、リードデータを含むユーザデータと、判定データとをページバッファ160に保持する。
このように、第3の実施の形態によれば、メモリ制御部100は、リードデータおよび判定データをページバッファ160に保持し、リードデータを必要に応じて反転してライトデータとしてNVRAM200に転送することができる。メモリシステム(メモリ制御部100およびNVRAM200)の外部のバッファにリードデータを保持させる必要がないため、メモリシステムは、異なるページアドレス間でデータを高速にコピーすることができる。
<4.第4の実施の形態>
[メモリ制御部の構成例]
図25は、第4の実施の形態におけるメモリ制御部100の一構成例を示すブロック図である。第4の実施の形態におけるメモリ制御部100は、ページバッファ160の配置を変更した点において第3の実施の形態と異なる。ホストインターフェース110とライト処理部120およびリード処理部130との間にページバッファ160が配置される点において第3の実施の形態と異なる。ホストインターフェース110は、ライト処理部120およびリード処理部130との間において、ページバッファ160を介して、コマンド、アドレス、データ、および、ステータスなどをやりとりする。
第4の実施の形態のページバッファ160は、リードデータを保持するが判定データを保持しない。リード処理部130は、リードデータをページバッファ160に保持させる。ライト処理部120は、ページバッファ160に保持されたリードデータの値を必要に応じて変更する。そして、ライト処理部120は、ページバッファ160からリードデータを読み出し、そのリードデータにおける特定の値のビット数を計数する。計数値がn/2より多ければ、ライト処理部120は、そのリードデータを反転してライトデータとして判定データと共に、NVRAM200に供給する。
[ライト処理部の構成例]
図26は、第4の実施の形態におけるライト処理部120の一構成例を示すブロック図である。第の実施形態の多数ビット判定部121は、ホストインターフェース110のまたはリード処理部130から、ページバッファ160を介して転送されたユーザデータを受け取る。多数ビット判定部121は、そのユーザデータについて判定データを生成し
[リード処理部の構成例]
図27は、第4の実施の形態におけるリード処理部130の一構成例を示すブロック図である。第4の実施の形態のリード処理部130は、判定データをページバッファ160に保持させず、ユーザデータのみをページバッファ160に保持させる点において、第3の実施の形態と異なる。
このように、第4の実施の形態によれば、メモリ制御部100は、リードデータをページバッファ160に保持し、リードデータを必要に応じて反転してライトデータとしてNVRAM200に転送することができる。メモリシステムの外部のバッファにリードデータを保持させる必要がないため、メモリシステムは、異なるページアドレス間でデータを高速にコピーすることができる。また、メモリ制御部100は、ページバッファ160から読み出したリードデータにおいて、特定の値のビット数を計数するため、メモリシステムは、ページバッファ160に保持したリードデータの値を変更してコピーすることができる。
<5.第5の実施の形態>
[メモリ制御部の構成例]
第1の実施の形態では、nビットのデータの全ビットを反転する処理を実行することにより、そのデータ内の特定の値のビット数をn/2以下にしていた。しかし、nビットのデータ内の特定の値のビット数をn/2以下にすることができる処理であれば、全ビットを反転する処理以外の処理を行ってもよい。例えば、メモリ制御部100は、データの全ビットを反転する処理の代わりに、一部のビットを反転する処理を行ってもよい。第5の実施の形態のメモリ制御部100は、一部のビットを反転する処理を実行することにより、nビットのデータ内の特定の値のビット数をn/2以下にする点において第1の実施の形態と異なる。
図28は、第5の実施の形態のライト処理部120の一構成例を示すブロック図である。第5の実施の形態のライト処理部120は、多数ビット判定部121およびライト側反転部123の代わりに、反転対象ビット列判定部161およびライト側部分反転部165を備える点において第1の実施の形態と異なる。
反転対象ビット列判定部161は、データの奇数ビット列における特定の値のビット数が偶数ビット列における特定の値のビット数より多いか否かを判定するものである。反転対象ビット列判定部161は、nビットのデータが入力されるたびに、そのデータの奇数ビット列と偶数ビット列とのそれぞれにおいて特定の値(例えば、「0」)のビットの個数を計数する。そして、反転対象ビット列判定部161は、奇数ビット列の計数値が偶数ビット列の計数値より大きいか否かを判定する。
反転対象ビット列判定部161は、判定結果を示す判定ビットを生成し、データと、その判定ビットとをページバッファ122に保持させる。例えば、奇数ビット列の「0」の計数値が、偶数ビット列の「0」の計数値より多い場合には、「1」の判定ビットが生成される。一方、奇数ビット列の計数値が偶数ビット列の計数値以下である場合には、「0」の判定ビットが生成される。なお、反転対象ビット列判定部161は、特許請求の範囲に記載の判定部の一例である。
ライト側部分反転部165は、ページバッファ122に保持されたデータの奇数ビット列または偶数ビット列を、その判定ビットに基づいて反転するものである。ライト側部分反転部165は、まず、データと、その判定ビットとをページバッファ122から読み出す。ライト側部分反転部165は、奇数ビット列の計数値の方が多いことを判定ビットが示す場合には、奇数ビット列を反転してライトデータとし、そうでない場合には、偶数ビット列を反転してライトデータとする。
偶数ビット列の反転においては、ライト側部分反転部165は、例えば、偶数ビット列が「1」で奇数ビット列が「0」のnビットのマスクデータと、反転対象のnビットのデータとの排他的論理和をビット単位で求めることにより、偶数ビット列を反転する。一方、奇数ビット列の反転においては、ライト側部分反転部165は、例えば、奇数ビット列が「1」で偶数ビット列が「0」のnビットのマスクデータと、反転対象のnビットのデータとの排他的論理和を求めることにより、奇数ビット列を反転する。
奇数ビット列および偶数ビット列のうち「0」の値の計数値が多い方を反転することにより、反転後のデータの「0」の個数は、常に、データの総ビット数の半数以下となる。
ライト側部分反転部165は、複数のライトデータからなるユーザデータと、複数の判定ビットからなる判定データとをECC生成部124およびメモリインターフェース140に供給する。なお、ライト側部分反転部165は、特許請求の範囲に記載のライト側出力部の一例である。
[反転対象ビット列判定部の構成例]
図29は、第5の実施の形態における反転対象ビット列判定部161の一構成例を示すブロック図である。この反転対象ビット列判定部161は、奇数ビット列計数部162、偶数ビット列計数部163、および、計数値比較部164を備える。
奇数ビット列計数部162は、nビットのデータの奇数ビット列における「0」の個数を計数するものである。奇数ビット列計数部162は、計数値を計数値比較部164に供給する。偶数ビット列計数部163は、nビットのデータの偶数ビット列における「0」の個数を計数するものである。偶数ビット列計数部163は、計数値を計数値比較部164に供給する。
計数値比較部164は、奇数ビット列の計数値と偶数ビット列の計数値とを比較するものである。計数値比較部164は、比較結果を示すビットを判定ビットとして生成する。例えば、奇数ビット列の計数値が偶数ビット列の計数値より多い場合には「1」の判定ビットを生成し、奇数ビット列の計数値が偶数ビット列の計数値以下である場合には「0」の判定ビットを生成する。計数値比較部164は、判定ビットを、ページバッファ122に保持させる。
図29に例示したように、奇数ビット列計数部162および偶数ビット列計数部163を設けることにより、奇数ビット列の「0」の個数を計数する処理と偶数ビット列の「0」の個数を計数する処理とを並列に実行することができる。これにより、「0」の個数を計数する処理を並列して実行しない第1の実施の形態と比較して、判定ビットを生成する処理を高速に行うことができる。
図30は、第5の実施の形態におけるデータおよび判定ビットの一例を示す図である。図30におけるaは、データにおける奇数ビット列および偶数ビット列の一例を示すものである。例えば、ビット列の右から数えて奇数番目のビットが奇数ビットとされ、偶数番目のビットが偶数ビットとされる。
図30におけるbは、データおよび判定ビットの一例を示す図である。16進数表示で0乃至15の値のデータNを2進数表示すると、「0b0000」乃至「0b1111」のビット列が得られる。このデータNにおける奇数ビット列と偶数ビット列との「0」の個数が反転対象ビット列判定部161により計数される。例えば、「0b0000」における奇数ビット列および偶数ビット列の「0」の個数はいずれも2である。また、「0010」における奇数ビット列の「0」の個数は2であり、偶数ビット列の「0」の個数は1個である。
そして、奇数ビット列の計数値が偶数ビット列の計数値より多い場合には、反転対象ビット列判定部161により「1」の判定ビットが生成される。一方、奇数ビット列の計数値が偶数ビット列の計数値以下である場合には「0」の判定ビットが生成される。例えば、「0000」における奇数ビット列の計数値は、偶数ビット列の計数値以下であるため、「0」の判定ビットが生成される。一方、「0010」における奇数ビット列の計数値は、偶数ビット列の計数値より多いため、「1」の判定ビットが生成される。
図31は、第5の実施の形態における奇数ビット列および偶数ビット列のいずれかを反転したデータの一例を示す図である。判定ビットが「0」である場合には、ライト側部分反転部165により、偶数列転用マスクデータ「0b1010」とデータNとの排他的論理和が行われ、その処理結果であるデータN’が出力される。一方、判定ビットが「1」である場合には、奇数列転用マスクデータ「0b0101」とデータNとの排他的論理和が行われ、その処理結果であるデータNB’が出力される。例えば、データ「0b0000」について判定ビット「0」が生成された場合には、偶数列半転用マスクデータ「0b1010」の使用により、「0b1010」のデータN’が出力される。また、データ「0b0010」について判定ビット「1」が生成された場合には、奇数列半転用マスクデータ「0b0101」の使用により、「0b0111」のデータN’が出力される。
データN'およびデータN'は、データNの偶数ビット列および奇数ビット列において「0」の個数が多い方が反転されたデータであるから、「0」の個数は、常に、そのデータの総ビット数の半数以下となる。このように、データの偶数ビット列または奇数ビット列を反転する処理を実行することにより、nビットのデータ内の特定の値のビット数をn/2以下にすることができる。
なお、nビットのデータ内の特定の値のビット数をn/2以下にすることができる変換処理であれば、メモリ制御部100は、データの偶数ビット列または奇数ビット列を反転する処理以外の処理を行ってもよい。例えば、データの上位ビット列または下位ビット列を反転する処理を行ってもよい。
[リード処理部の構成例]
図32は、第5の実施の形態におけるリード処理部130の一構成例を示すブロック図である。第5の実施の形態のリード処理部130は、リード側反転部131の代わりに、リード側部分反転部134を備える点において第1の実施の形態と異なる。
リード側部分反転部134は、判定ビットに基づいて、ページバッファ132に保持されたデータの偶数ビット列または奇数ビット列を反転するものである。リード側部分反転部134は、まず、データと、その判定ビットとをページバッファ132から読み出す。そして、リード側部分反転部134は、奇数ビット列の計数値の方が多いことを判定ビットが示す場合には、奇数ビット列を反転してリードデータとし、そうでない場合には偶数ビット列を反転してリードデータとする。リード側部分反転部134は、リードデータを含むユーザデータをホストインターフェース110に供給する。なお、リード側部分反転部134は、特許請求の範囲に記載のリード側出力部の一例である。
[メモリ制御部の動作例]
図33は、第5の実施の形態におけるメモリ制御部側ライト処理の一例を示すフローチャートである。第5の実施の形態におけるメモリ制御部側ライト処理は、ステップS920およびS930の代わりに、ステップS911およびS915を実行する点において第1の実施の形態と異なる。メモリ制御部100は、奇数ビット列の「0」の個数の方が多いか否かを判定するための反転対象ビット列判定処理を実行する(ステップS911)。次いで、メモリ制御部100は、奇数ビット列または偶数ビット列を反転するためのライト側部分反転処理を実行する(ステップS915)。ステップS915の後、メモリ制御部100は、メモリ制御部側ライト処理を終了する。
図34は、第5の実施の形態における反転対象ビット列判定処理の一例を示すフローチャートである。反転対象ビット列判定処理は、ステップS922およびS924の代わりにステップS912およびS913を実行する点以外は、第1の実施の形態の多数ビット判定処理と同様である。
反転対象ビット列判定部161は、ステップS921の後、選択したデータの奇数ビット列および偶数ビット列のそれぞれの「0」のビット数を計数する(ステップS912)。反転対象ビット列判定部161は、選択したデータをページバッファ122に保持する(ステップS923)。そして、反転対象ビット列判定部161は、奇数ビット列の方が「0」の個数が多いか否かを判定する(ステップS913)。
奇数ビット列の「0」の個数が、偶数ビット列の「0」の個数以下である場合には(ステップS913:No)、反転対象ビット列判定部161は、「0」の値の判定ビットを生成し、その判定ビットをページバッファ122に保持する(ステップS925)。一方、奇数ビット列の方が「0」の個数が多い場合には(ステップS913:Yes)、反転対象ビット列判定部161は、「1」の値の判定ビットを生成し、その判定ビットをページバッファ122に保持する(ステップS926)。ステップS925またはS926の後、反転対象ビット列判定部161は、ステップS927を実行する。
図35は、第5の実施の形態におけるライト側部分反転処理の一例を示すフローチャートである。ライト側部分反転処理は、ステップS933乃至S936の代わりにステップS916乃至S919を実行する点以外は、第1の実施の形態のライト側反転処理と同様である。
ライト側部分反転部165は、ステップS931の後、判定ビットが「0」であるか否かを判断する(ステップS932)。判定ビットが「0」である場合には(ステップS932:Yes)、ライト側部分反転部165は、偶数ビット列を反転してライトデータとしてNVRAM200に転送する(ステップS916)。そして、ライト側部分反転部165は、偶数ビット列を反転したデータおよび判定ビットについてエラー訂正コードを生成する(ステップS917)。
一方、判定ビットが「1」である場合には(ステップS932:No)、ライト側部分反転部165は、奇数ビット列を反転してライトデータとしてNVRAM200に転送する(ステップS918)。そして、ライト側部分反転部165は、奇数ビット列を反転したデータおよび判定ビットについてエラー訂正コードを生成する(ステップS919)。ステップS917またはS919の後、ライト側部分反転部165は、ステップS937およびS938を実行する。
図36は、第5の実施の形態におけるメモリ制御部側リード処理の一例を示すフローチャートである。第5の実施の形態のメモリ制御部側リード処理は、ステップS980の代わりにステップS961を実行する点において第1の実施の形態と異なる。メモリ制御部100は、ステップS970の後、奇数ビット列または偶数ビット列を反転するためのリード側部分反転処理を実行する(ステップS961)。ステップS961の後、メモリ制御部100は、メモリ制御部側リード処理を終了する。
図37は、第5の実施の形態におけるリード側部分反転処理の一例を示すフローチャートである。リード側部分反転処理は、ステップS983およびS984の代わりにステップS96およびS96を実行する点以外は、第1の実施の形態のリード側反転処理と同様である。
リード側部分反転部134は、ステップS981の後、判定ビットが「0」であるか否かを判断する(ステップS982)。判定ビットが「0」である場合には(ステップS982:Yes)、リード側部分反転部134は、偶数ビット列を反転したデータをリードデータとしてホストコンピュータ300へ転送する(ステップS96)。
一方、判定ビットが「1」である場合には(ステップS982:No)、リード側部分反転部134は、奇数ビット列を反転したデータをリードデータとしてホストコンピュータ300へ転送する(ステップS96)。ステップS96またはS96の後、リード側部分反転部134は、ステップS985を実行する。
なお、第5の実施の形態のメモリ制御部100において、第2乃至第4の実施の形態に記載の構成を適用してもよい。後述する第5の実施の形態の変形例についても同様である。
このように、第5の実施の形態によれば、メモリ制御部100はnビットのデータ内の偶数ビット列および奇数ビット列のうち特定の値のビットが多い方を反転するため、セット処理またはリセット処理における変化ビット数をn/2以下にすることができる。これにより、セット処理およびリセット処理のそれぞれにおける最大消費電力が低減される。
<6.変形例>
[メモリ制御部の構成例]
第5の実施の形態では、メモリ制御部100は、判定ビットを生成した後にデータの一部のビットを反転していたが、一部のビットを反転した後に判定ビットを生成することもできる。第5の実施の形態の変形例のメモリ制御部100は、一部のビットを反転した後に判定ビットを生成する点において第5の実施の形態と異なる。
図38は、第5の実施の形態の変形例におけるライト処理部120の一構成例を示すブロック図である。変形例のライト処理部120は、反転対象ビット列判定部161およびライト側部分反転部165の代わりに反転対象ビット列判定部171およびデータ転送処理部172を備える点において第5の実施の形態と異なる。
反転対象ビット列判定部171は、データNにおいて偶数ビット列を反転したデータN'と、奇数ビット列を反転したデータN'とを生成する。反転対象ビット列判定部171は、それぞれのデータの「0」の個数を計数する。そして、反転対象ビット列判定部171は、データN'の計数値がデータN'の計数値より多いか否かを判定し、判定結果を示す判定ビットとデータN'またはデータN'とをページバッファ122に保持させる。例えば、反転対象ビット列判定部171は、データN'の計数値がデータN'の計数値より多い場合には、「1」の判定ビットを生成し、データN'とともにページバッファ122に保持させる。一方、データN'の計数値がデータN'の計数値以下である場合には、反転対象ビット列判定部171は、「0」の判定ビットを生成し、データN'とともにページバッファ122に保持させる。
データ転送処理部172は、判定ビットとデータN'またはデータN'とをECC生成部124およびメモリインターフェース140に転送するものである。
[メモリ制御部の動作例]
図39は、第5の実施の形態の変形例におけるメモリ制御部側ライト処理の一例を示すフローチャートである。変形例のメモリ制御部側ライト処理は、ステップS915の代わりにステップS995を実行する点において第5の実施の形態と異なる。メモリ制御部100は、ステップS911を実行した後、判定ビットと、一部を反転したデータとを転送するためのデータ転送処理を実行する(ステップS995)。ステップS995の後、メモリ制御部100は、メモリ制御部側ライト処理を終了する。
図40は、第5の実施の形態の変形例における反転対象ビット列判定処理の一例を示すフローチャートである。変形例の反転対象ビット列判定処理は、ステップS922乃至S926の代わりにステップS904乃至S909を実行する点において第1の実施の形態の多数ビット判定処理と異なる。
反転対象ビット列判定部171は、ステップS921の後、データNの偶数ビット列を反転したデータN'を生成する(ステップS904)。また、反転対象ビット列判定部171は、データNの奇数ビット列を反転したデータN'を生成する(ステップS905)。反転対象ビット列判定部171は、データN'およびデータN'のそれぞれの「0」のビット数を計数する(ステップS906)。そして、反転対象ビット列判定部171は、データN'の方が「0」の個数が多いか否かを判定する(ステップS907)。
データN'の計数値がデータN'の計数値以下である場合(ステップS907:No)、反転対象ビット列判定部171は「0」の判定ビットを生成し、データN'とともにページバッファ122に保持させる(ステップS908)。一方、データN'の方が「0」の個数が多い場合(ステップS907:Yes)、反転対象ビット列判定部171は「1」の判定ビットを生成し、データN'とともにページバッファ122に保持させる(ステップS909)。ステップS908またはS909の後、反転対象ビット列判定部171はステップS927を実行する。
図41は、第5の実施の形態の変形例におけるデータ転送処理の一例を示すフローチャートである。変形例のデータ転送処理は、ステップS916およびS918の代わりにステップS996およびS997を実行する点以外は、第5の実施の形態のライト側部分反転処理と同様である。
データ転送処理部172は、ステップS931の後、判定ビットが「0」であるか否かを判断する(ステップS932)。判定ビットが「0」である場合には(ステップS932:Yes)、データ転送処理部172は、偶数ビット列が反転されたデータN’をライトデータとしてNVRAM200に転送する(ステップS996)。そして、データ転送処理部172はステップS91を実行する。
一方、判定ビットが「1」である場合には(ステップS932:No)、データ転送処理部172は、数ビット列が反転されたデータN’をライトデータとしてNVRAM200に転送する(ステップS997)。そして、データ転送処理部172はステップS919を実行する。
このように変形例によれば、メモリ制御部100は、データの一部のビットを反転した結果に基づいて判定ビットを生成することにより、セット処理またはリセット処理における変化ビット数を総ビット数の半数以下に抑制することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
なお、本技術は以下のような構成もとることができる。
(1)ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルに対する入力データの少なくとも一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、
前記ビット数が前記基準値を超えると判定された場合には前記少なくとも一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力部と
を具備する記憶制御装置。
(2)前記基準値は、前記入力データの全ビットの数の半数であり、
前記判定部は、前記全ビットのうち前記特定の値のビット数が前記基準値を超えるか否かを判定し、
前記ライト側出力部は、前記ビット数が前記基準値を超えると判定された場合には前記入力データを反転して前記ライトデータとして出力し、前記ビット数が前記基準値を超えないと判定された場合には前記入力データを反転せずに前記ライトデータとして出力する
前記(1)記載の記憶制御装置。
(3)前記入力データは2つの部分からなり、
前記判定部は、前記2つの部分のうちの一方の部分において前記ビット数が前記基準値を超えるか否かを判定し、
前記基準値は、前記2つの部分のうちの他方の部分における前記特定の値のビット数であり、
前記ライト側出力部は、前記ビット数が前記基準値を超えると判定された場合には前記一方の部分を反転した前記入力データを前記ライトデータとして出力し、前記ビット数が前記基準値を超えないと判定された場合には前記他方の部分を反転した前記入力データを前記ライトデータとして出力する
前記(1)記載の記憶制御装置。
(4)データと当該データに対応する前記判定データとを前記メモリセルから取得するデータ取得部と、
前記ビット数が前記基準値を超えることを前記判定データが示す場合には前記取得されたデータにおいて前記少なくとも一部を反転してリードデータとして出力するリード側出力部と
をさらに具備する前記(1)乃至(3)のいずれかに記載の記憶制御装置。
(5)前記リードデータと当該リードデータに対応する前記判定データとを保持するバッファをさらに具備し、
前記ライト側出力部は、前記リードデータおよび前記判定データを前記バッファから読み出して前記ビット数が前記基準値を超えることを前記判定データが示す場合には前記少なくとも一部を反転した前記リードデータを前記ライトデータとして出力する
前記(4)記載の記憶制御装置。
(6)前記リードデータを保持するバッファをさらに具備し、
前記多数ビット判定部は、前記リードデータを前記バッファから読み出して前記リードデータの少なくとも一部において前記特定の値のビット数が前記基準値を超えるか否かをさらに判定して前記判定データを生成し、
前記ライト側反転部は、前記ビット数が前記基準値を超えることを前記判定データが示す場合には前記少なくとも一部を反転した前記リードデータを前記ライトデータとしてさらに出力する
前記(4)または(5)に記載の記憶制御装置。
(7)前記メモリセルから通知されたデータサイズに基づいて前記入力データの全ビットの数を変更するデータサイズ変更部をさらに具備し、
前記多数ビット判定部は、前記変更された前記全ビットの数に応じて前記基準値を変更する
前記(1)乃至(6)のいずれかに記載の記憶制御装置。
(8)前記多数ビット判定部は、前記対象データにおいて前記特定の値のビット数を計数して当該計数値を前記基準値と比較することにより前記特定の値のビット数が前記基準値より多いか否かを判定する
前記(1)乃至(7)のいずれかに記載の記憶制御装置。
(9)ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルと、
前記メモリセルに対する入力データの少なくとも一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、
前記ビット数が前記基準値を超えると判定された場合には前記少なくとも一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力部と
を具備するメモリシステム。
(10)入力データのライト処理を指示するライトコマンドを発行するホストコンピュータと、
前記ライト処理において2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルと、
前記入力データの少なくとも一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、
前記ビット数が前記基準値を超えると判定された場合には前記少なくとも一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力部と
を具備する情報処理システム。
(11)判定部が、ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルに対する入力データの少なくとも一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定手順と、
ライト出力部が、前記ビット数が前記基準値を超えると判定された場合には前記少なくとも一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力手順と
を具備する記憶制御方法。
100 メモリ制御部
110 ホストインターフェース
120 ライト処理部
121 多数ビット判定部
122、132、160 ページバッファ
123 ライト側反転部
124 ECC生成部
130 リード処理部
131 リード側反転部
133 エラー検出訂正部
134 リード側部分反転部
140 メモリインタ−フェース
150 データサイズ変更部
161、171 反転対象ビット列判定部
162 奇数ビット列計数部
163 偶数ビット列計数部
164 計数値比較部
165 ライト側部分反転部
172 データ転送処理部
200 NVRAM
210 制御インターフェース
220 NVRAM制御部
230 メモリセルアレイ
300 ホストコンピュータ

Claims (8)

  1. ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルに対する入力データの一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、
    前記ビット数が前記基準値を超えると判定された場合には前記一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力部と
    を具備し、
    前記入力データは2つの部分からなり、
    前記判定部は、前記2つの部分のうちの一方の部分において前記ビット数が前記基準値を超えるか否かを判定し、
    前記基準値は、前記2つの部分のうちの他方の部分における前記特定の値のビット数であり、
    前記ライト側出力部は、前記ビット数が前記基準値を超えると判定された場合には前記一方の部分を反転した前記入力データを前記ライトデータとして出力し、前記ビット数が前記基準値を超えないと判定された場合には前記他方の部分を反転した前記入力データを前記ライトデータとして出力する
    記憶制御装置。
  2. データと当該データに対応する前記判定データとを前記メモリセルから取得するデータ取得部と、
    前記ビット数が前記基準値を超えることを前記判定データが示す場合には前記取得されたデータにおいて前記一部を反転してリードデータとして出力するリード側出力部と
    をさらに具備する請求項1記載の記憶制御装置。
  3. 前記リードデータと当該リードデータに対応する前記判定データとを保持するバッファをさらに具備し、
    前記ライト側出力部は、前記リードデータおよび前記判定データを前記バッファから読み出して前記ビット数が前記基準値を超えることを前記判定データが示す場合には前記一部を反転した前記リードデータを前記ライトデータとして出力する
    請求項記載の記憶制御装置。
  4. 前記リードデータを保持するバッファをさらに具備し、
    前記判定部は、前記リードデータを前記バッファから読み出して前記リードデータの一部において前記特定の値のビット数が前記基準値を超えるか否かをさらに判定して前記判定データを生成し、
    前記ライト側出力部は、前記ビット数が前記基準値を超えることを前記判定データが示す場合には前記一部を反転した前記リードデータを前記ライトデータとしてさらに出力する
    請求項記載の記憶制御装置。
  5. 前記判定部は、前記一部において前記特定の値のビット数を計数して当該計数値を前記基準値と比較することにより前記特定の値のビット数が前記基準値より多いか否かを判定する
    請求項1記載の記憶制御装置。
  6. ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルと、
    前記メモリセルに対する入力データの一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、
    前記ビット数が前記基準値を超えると判定された場合には前記一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力部と
    を具備し、
    前記入力データは2つの部分からなり、
    前記判定部は、前記2つの部分のうちの一方の部分において前記ビット数が前記基準値を超えるか否かを判定し、
    前記基準値は、前記2つの部分のうちの他方の部分における前記特定の値のビット数であり、
    前記ライト側出力部は、前記ビット数が前記基準値を超えると判定された場合には前記一方の部分を反転した前記入力データを前記ライトデータとして出力し、前記ビット数が前記基準値を超えないと判定された場合には前記他方の部分を反転した前記入力データを前記ライトデータとして出力する
    メモリシステム。
  7. 入力データのライト処理を指示するライトコマンドを発行するホストコンピュータと、
    前記ライト処理において2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルと、
    前記入力データの一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定部と、
    前記ビット数が前記基準値を超えると判定された場合には前記一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力部と
    を具備し、
    前記入力データは2つの部分からなり、
    前記判定部は、前記2つの部分のうちの一方の部分において前記ビット数が前記基準値を超えるか否かを判定し、
    前記基準値は、前記2つの部分のうちの他方の部分における前記特定の値のビット数であり、
    前記ライト側出力部は、前記ビット数が前記基準値を超えると判定された場合には前記一方の部分を反転した前記入力データを前記ライトデータとして出力し、前記ビット数が前記基準値を超えないと判定された場合には前記他方の部分を反転した前記入力データを前記ライトデータとして出力する
    情報処理システム。
  8. 判定部が、ライト処理時に2値のうちの一方の値への書換えと他方の値への書換えとを順に実行するメモリセルに対する入力データの一部において前記2値のうちの特定の値のビット数が基準値を超えるか否かを判定して当該判定の結果を示す判定データを生成する判定手順と、
    ライト側出力部が、前記ビット数が前記基準値を超えると判定された場合には前記一部を反転した前記入力データをライトデータとして前記判定データとともに前記メモリセルへ出力するライト側出力手順と
    を具備し、
    前記入力データは2つの部分からなり、
    前記判定手順において、前記2つの部分のうちの一方の部分において前記ビット数が前記基準値を超えるか否かを判定し、
    前記基準値は、前記2つの部分のうちの他方の部分における前記特定の値のビット数であり、
    前記ライト側出力手順において、前記ビット数が前記基準値を超えると判定された場合には前記一方の部分を反転した前記入力データを前記ライトデータとして出力し、前記ビット数が前記基準値を超えないと判定された場合には前記他方の部分を反転した前記入力データを前記ライトデータとして出力する
    記憶制御方法。
JP2012237590A 2012-04-16 2012-10-29 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法 Expired - Fee Related JP5942781B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012237590A JP5942781B2 (ja) 2012-04-16 2012-10-29 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
US13/780,655 US9361952B2 (en) 2012-04-16 2013-02-28 Storage controlling apparatus, memory system, information processing system and storage controlling method
CN201310120350.7A CN103377139B (zh) 2012-04-16 2013-04-09 存储控制装置、存储器系统、信息处理系统及存储控制方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012092591 2012-04-16
JP2012092591 2012-04-16
JP2012237590A JP5942781B2 (ja) 2012-04-16 2012-10-29 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法

Publications (2)

Publication Number Publication Date
JP2013239142A JP2013239142A (ja) 2013-11-28
JP5942781B2 true JP5942781B2 (ja) 2016-06-29

Family

ID=49324950

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012237590A Expired - Fee Related JP5942781B2 (ja) 2012-04-16 2012-10-29 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法

Country Status (3)

Country Link
US (1) US9361952B2 (ja)
JP (1) JP5942781B2 (ja)
CN (1) CN103377139B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102680521B1 (ko) 2019-06-18 2024-07-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5929790B2 (ja) * 2012-06-19 2016-06-08 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2016013285A1 (ja) * 2014-07-24 2016-01-28 ソニー株式会社 メモリコントローラおよびメモリコントローラの制御方法
CN107077430B (zh) * 2014-10-24 2020-06-30 索尼公司 存储器控制器、存储器系统以及存储器控制器控制方法
JP6657634B2 (ja) 2015-07-24 2020-03-04 ソニー株式会社 符号化装置、メモリシステム、通信システムおよび符号化方法
WO2017138235A1 (ja) * 2016-02-08 2017-08-17 ソニー株式会社 メモリコントローラ、不揮発性メモリおよびメモリコントローラの制御方法
CN107195321B (zh) * 2017-05-15 2020-05-19 华中科技大学 一种交叉开关结构阻变式存储器性能优化方法及系统
US10032511B1 (en) * 2017-05-18 2018-07-24 Macronix International Co., Ltd. Memory with dynamic permissible bit write logic and method
KR20190036795A (ko) * 2017-09-28 2019-04-05 에스케이하이닉스 주식회사 전류 소모량을 줄일 수 있는 반도체 메모리 장치 및 이를 포함하는 시스템
US10431301B2 (en) 2017-12-22 2019-10-01 Micron Technology, Inc. Auto-referenced memory cell read techniques
US10566052B2 (en) 2017-12-22 2020-02-18 Micron Technology, Inc. Auto-referenced memory cell read techniques
JP6894012B2 (ja) 2018-01-23 2021-06-23 ヌヴォトンテクノロジージャパン株式会社 不揮発性メモリ装置およびその書込み方法
US10916324B2 (en) 2018-09-11 2021-02-09 Micron Technology, Inc. Data state synchronization involving memory cells having an inverted data state written thereto
US11456033B2 (en) 2018-09-12 2022-09-27 Micron Technology, Inc. Dedicated commands for memory operations
US10622065B2 (en) 2018-09-12 2020-04-14 Micron Technology, Inc. Dedicated commands for memory operations
JP2020047352A (ja) * 2018-09-20 2020-03-26 キオクシア株式会社 半導体記憶装置
KR102580634B1 (ko) * 2018-10-26 2023-09-19 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리를 위한 데이터 처리 방법 및 관련 데이터 프로세서
TWI708253B (zh) * 2018-11-16 2020-10-21 力旺電子股份有限公司 非揮發性記憶體良率提升的設計暨測試方法
US10951232B2 (en) 2018-11-26 2021-03-16 Micron Technology, Inc. Error correction bit flipping scheme
US11144388B2 (en) * 2018-12-11 2021-10-12 Samsung Electronics Co., Ltd. Nonvolatile memory device and memory system including nonvolatile memory device
JP2020154525A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステムおよび情報処理システム
US12027209B2 (en) * 2019-06-17 2024-07-02 SK Hynix Inc. Memory device and method of operating the same
JP2021179672A (ja) 2020-05-11 2021-11-18 ソニーセミコンダクタソリューションズ株式会社 メモリモジュール
CN114115701A (zh) * 2020-09-01 2022-03-01 北京兆易创新科技股份有限公司 非易失性存储器及其写入方法及读取方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0845275A (ja) * 1994-07-29 1996-02-16 Toshiba Corp メモリリード/ライト制御方法およびその方法を使用したメモリ装置
US6292868B1 (en) * 1996-10-15 2001-09-18 Micron Technology, Inc. System and method for encoding data to reduce power and time required to write the encoded data to a flash memory
JP4330396B2 (ja) * 2003-07-24 2009-09-16 株式会社ルネサステクノロジ 半導体記憶装置
JP2006106577A (ja) 2004-10-08 2006-04-20 Pasuko:Kk 映像再生表示システム
JP2008146255A (ja) * 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
US7783846B2 (en) * 2007-08-09 2010-08-24 International Business Machines Corporation Method, apparatus and computer program product providing energy reduction when storing data in a memory
US20090091968A1 (en) * 2007-10-08 2009-04-09 Stefan Dietrich Integrated circuit including a memory having a data inversion circuit
JP4719236B2 (ja) * 2008-03-21 2011-07-06 株式会社東芝 半導体記憶装置及び半導体記憶システム
JP2010027163A (ja) * 2008-07-22 2010-02-04 Toshiba Corp 半導体メモリコントローラ、および半導体メモリシステム、および半導体メモリシステムの記録再生方法
US8351290B1 (en) * 2008-09-12 2013-01-08 Marvell International Ltd. Erased page detection
JP2010129154A (ja) * 2008-11-28 2010-06-10 Samsung Electronics Co Ltd 不揮発性半導体記憶装置
JP2011008850A (ja) * 2009-06-24 2011-01-13 Sony Corp メモリ及び情報処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102680521B1 (ko) 2019-06-18 2024-07-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법

Also Published As

Publication number Publication date
US20130272078A1 (en) 2013-10-17
US9361952B2 (en) 2016-06-07
JP2013239142A (ja) 2013-11-28
CN103377139B (zh) 2018-04-27
CN103377139A (zh) 2013-10-30

Similar Documents

Publication Publication Date Title
JP5942781B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP6950149B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP5929790B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
EP2800097B1 (en) Storage control device, storage device, information processing system, and processing methods therefor
JP6102632B2 (ja) 記憶制御装置、ホストコンピュータ、情報処理システムおよび記憶制御装置の制御方法
JP6686892B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP5929456B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP6447629B2 (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP6497394B2 (ja) メモリシステム、記憶装置、および、メモリシステムの制御方法
JP6891817B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP2013092854A (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
EP2799998A1 (en) Storage control device, storage device, information processing system, and processing methods in same
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP6497395B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP6493062B2 (ja) メモリコントローラ、メモリシステムおよび情報処理システム
JP2014022004A (ja) 記憶制御装置、記憶装置、および、それらにおける処理方法
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
WO2017010147A1 (ja) 不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
WO2017043140A1 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP2014013635A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2022158120A1 (ja) コントローラ、不揮発性記憶装置、および、制御方法
JP2013143118A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2018055400A (ja) メモリコントローラ、メモリシステム及びメモリ制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150130

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151014

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151020

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151201

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20160105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160325

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160407

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160509

R151 Written notification of patent or utility model registration

Ref document number: 5942781

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees