図面 (/)

技術 符号化装置、メモリシステム、通信システムおよび符号化方法

出願人 ソニー株式会社
発明者 新橋龍男中西健一藤波靖岩城宏行石井健大久保英明
出願日 2015年7月24日 (5年4ヶ月経過) 出願番号 2015-146671
公開日 2017年2月2日 (3年9ヶ月経過) 公開番号 2017-027440
状態 特許登録済
技術分野 記憶装置の信頼性向上技術 リードオンリーメモリ エラーの検出訂正 符号誤り検出・訂正
主要キーワード プレリード リセット処理後 非ユーザデータ 未使用データ 誤りの検出および訂正 データ逆変換 反転フラグ ベリファイエラー
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2017年2月2日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (20)

課題

データを符号化してメモリセルに書き込むメモリシステムにおいて、メモリセルのデータ保持特性を向上させる。

解決手段

第1候補パリティ生成部は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する。第2候補パリティ生成部は、所定の可変領域に所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する。選択部は、第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する。出力部は、選択パリティに対応する情報部と選択パリティとからなる符号語を出力する。

概要

背景

近年の情報処理システムにおいては、補助記憶装置ストレージとして、不揮発性メモリ(NVM:Non-Volatile memory)が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速ランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistive RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。

これらの不揮発性メモリの中には、論理値「0」を保持する際のデータ保持特性と、論理値「1」を保持する際のデータ保持特性とが異なるものがある。このデータ保持特性は、リテンションとも呼ばれる。論理値「0」のデータ保持特性(リテンション)の方が良好である場合に、「1」の個数が少なくなるように所定の変換処理反転など)をユーザデータに対して行うメモリコントローラが提案されている(例えば、特許文献1参照。)。このメモリコントローラは、変換処理後のユーザデータの誤りを検出するためのパリティをユーザデータに付加してメモリセルに書き込む。

概要

データを符号化してメモリセルに書き込むメモリシステムにおいて、メモリセルのデータ保持特性を向上させる。第1候補パリティ生成部は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する。第2候補パリティ生成部は、所定の可変領域に所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する。選択部は、第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する。出力部は、選択パリティに対応する情報部と選択パリティとからなる符号語を出力する。

目的

本技術はこのような状況に鑑みて生み出されたものであり、データを符号化してメモリセルに書き込むメモリシステムにおいて、メモリセルのデータ保持特性を向上させることを目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部とを具備する符号化装置

請求項2

前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記所定の可変領域を含む未使用データとを含む請求項1記載の符号化装置。

請求項3

前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて特定の値のビット個数を重みとして計数する第1の重みカウンタと、前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記特定の値のビットの個数を重みとして計数する第2の重みカウンタと、前記第1および第2の重みカウンタのそれぞれの計数値を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部とを備える請求項2記載の符号化装置。

請求項4

メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビット数書換えビット数として計数する第1の書換えビット数カウンタと、前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データととにおいて前記プレリードデータと値の異なるビット数を書換えビット数として計数する第2の書換えビット数カウンタと、前記第1および第2の書換えビット数カウンタのそれぞれで計数された書換えビット数を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部とを備える請求項2記載の符号化装置。

請求項5

メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第1の最長ランカウンタと、前記選択部は、前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第2の最長ランカウンタと、前記第1および第2の最長ラン数カウンタのそれぞれで求められた最長ランの長さを比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部とを備える請求項2記載の符号化装置。

請求項6

前記符号語において前記ユーザデータと前記選択パリティとの間に前記未使用データが配置される請求項2記載の符号化装置。

請求項7

前記符号語において前記未使用データと前記選択パリティとの間に前記ユーザデータが配置される請求項2記載の符号化装置。

請求項8

前記符号語において前記ユーザデータは複数の領域に分散して配置される請求項2記載の符号化装置。

請求項9

前記符号語において前記未使用データは、複数の領域に分散して配置される請求項2記載の符号化装置。

請求項10

前記未使用データは、前記可変領域と値が変更されない固定領域とからなり、前記第2候補パリティ生成部は、前記可変領域の値を変更した前記情報部に対応する前記第2の候補パリティを生成する請求項2記載の符号化装置。

請求項11

前記符号語において前記可変領域は複数の領域に分散して配置される請求項10記載の符号化装置。

請求項12

前記符号語において前記固定領域は複数の領域に分散して配置される請求項10記載の符号化装置。

請求項13

前記第1の候補パリティ生成部は、前記情報部から前記第1の候補パリティを生成し、前記第2の候補パリティ生成部は、前記第1の候補パリティと第1のパリティパターンとの論理演算により前記第2の候補パリティを生成する請求項1記載の符号化装置。

請求項14

第2のパリティパターンと前記第1の候補パリティとの論理演算により第3の候補パリティを生成する第3の候補パリティ生成部と、前記第2のパリティパターンと前記第2の候補パリティとの論理演算により第4の候補パリティを生成する第4の候補パリティ生成部とをさらに具備し、前記選択部は、前記第1、第2、第3および第4の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する請求項13記載の符号化装置。

請求項15

ユーザデータにおける特定の値のビット数を変換する変換処理を行って当該変換処理後の前記ユーザデータと前記変換処理前の前記ユーザデータとのいずれかを前記第1の候補パリティ生成部に出力するユーザデータ変換部をさらに具備し、前記第1の候補パリティ生成部は、前記出力されたユーザデータを含む前記第1の情報部から前記第1の候補パリティを生成する請求項1記載の符号化装置。

請求項16

所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語をライトデータとしてメモリセルに出力する出力部と、前記メモリセルからリードデータを読み出して前記リードデータを復号する復号部とを具備するメモリコントローラ

請求項17

所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を送信語として出力する出力部と、前記送信語に対応する受信語を受信して復号する復号部とを具備する通信ステム

請求項18

所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成手順と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成手順と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択手順と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力手順とを具備する符号化方法

技術分野

0001

本技術は、符号化装置メモリシステム通信ステムおよび符号化方法に関する。詳しくは、データを符号化してメモリセルに書き込む符号化装置、メモリシステム、通信システムおよび符号化方法に関する。

背景技術

0002

近年の情報処理システムにおいては、補助記憶装置ストレージとして、不揮発性メモリ(NVM:Non-Volatile memory)が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速ランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistive RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。

0003

これらの不揮発性メモリの中には、論理値「0」を保持する際のデータ保持特性と、論理値「1」を保持する際のデータ保持特性とが異なるものがある。このデータ保持特性は、リテンションとも呼ばれる。論理値「0」のデータ保持特性(リテンション)の方が良好である場合に、「1」の個数が少なくなるように所定の変換処理反転など)をユーザデータに対して行うメモリコントローラが提案されている(例えば、特許文献1参照。)。このメモリコントローラは、変換処理後のユーザデータの誤りを検出するためのパリティをユーザデータに付加してメモリセルに書き込む。

先行技術

0004

特開2013−239142号公報

発明が解決しようとする課題

0005

上述の従来技術では、ユーザデータの反転により、そのユーザデータを保持するメモリセルのリテンションが向上する。しかしながら、メモリコントローラがパリティを反転せずにそのまま書き込むため、パリティを保持するメモリセルのリテンションが向上しないという問題がある。

0006

本技術はこのような状況に鑑みて生み出されたものであり、データを符号化してメモリセルに書き込むメモリシステムにおいて、メモリセルのデータ保持特性を向上させることを目的とする。

課題を解決するための手段

0007

本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部とを具備する符号化装置、および、当該装置における符号化方法である。これにより、第1および第2の候補パリティのうち所定の条件を満たす選択パリティと選択パリティに対応する上記情報部とからなる符号語が出力されるという作用をもたらす。

0008

また、この第1の側面において、前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記所定の可変領域を含む未使用データとを含んでもよい。これにより、ユーザデータ以外の領域に可変領域が配置された情報部からパリティが生成されるという作用をもたらす。

0009

また、この第1の側面において、上記選択部は、上記第1の候補パリティと当該第1の候補パリティに対応する上記未使用データとにおいて特定の値のビットの個数を重みとして計数する第1の重みカウンタと、上記第2の候補パリティと当該第2の候補パリティに対応する上記未使用データとにおいて上記特定の値のビットの個数を重みとして計数する第2の重みカウンタと、上記第1および第2の重みカウンタのそれぞれの計数値を比較して当該比較結果に基づいて上記所定の条件を満たすパリティを選択する比較部とを備えてもよい。これにより、特定の値のビット数の比較結果に基づいてパリティが選択されるという作用をもたらす。

0010

また、この第1の側面において、メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、上記選択部は、上記第1の候補パリティと当該第1の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビット数を書換えビット数として計数する第1の書換えビット数カウンタと、上記第2の候補パリティと当該第2の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビット数を書換えビット数として計数する第2の書換えビット数カウンタと、上記第1および第2の書換えビット数カウンタのそれぞれで計数された書換えビット数を比較して当該比較結果に基づいて上記所定の条件を満たすパリティを選択する比較部とを備えてもよい。これにより、書換えビット数の比較結果に基づいてパリティが選択されるという作用をもたらす。

0011

また、この第1の側面において、メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、上記選択部は、上記第1の候補パリティと当該第1の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第1の最長ランカウンタと、上記選択部は、上記第2の候補パリティと当該第2の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第2の最長ランカウンタと、上記第1および第2の最長ラン数カウンタのそれぞれで求められた最長ランの長さを比較して当該比較結果に基づいて上記所定の条件を満たすパリティを選択する比較部とを備えてもよい。これにより、最長ランの長さの比較結果に基づいてパリティが選択されるという作用をもたらす。

0012

また、この第1の側面において、上記符号語において上記ユーザデータと上記選択パリティとの間に上記未使用データが配置されてもよい。これにより、ユーザデータと選択パリティとの間に配置された未使用データが変更されるという作用をもたらす。

0013

また、この第1の側面において、上記符号語において上記未使用データと上記選択パリティとの間に上記ユーザデータが配置されてもよい。これにより、未使用データと選択パリティとの間にユーザデータが配置された符号語の未使用データが変更されるという作用をもたらす。

0014

また、この第1の側面において、上記符号語において上記ユーザデータは複数の領域に分散して配置されてもよい。これにより、ユーザデータが複数の領域に分散して配置された符号語の未使用データが変更されるという作用をもたらす。

0015

また、この第1の側面において、上記符号語において上記未使用データは、複数の領域に分散して配置されてもよい。これにより、複数の領域に分散して配置された未使用データが変更されるという作用をもたらす。

0016

また、この第1の側面において、上記未使用データは、前記可変領域と値が変更されない固定領域とからなり、上記第2候補パリティ生成部は、上記可変領域の値を変更した上記情報部に対応する上記第2の候補パリティを生成してもよい。これにより、未使用データ内の可変領域の値が変更されるという作用をもたらす。

0017

また、この第1の側面において、上記符号語において上記可変領域は複数の領域に分散して配置されてもよい。これにより、複数の領域に分散して配置された可変領域が変更されるという作用をもたらす。

0018

また、この第1の側面において、上記符号語において上記固定領域は複数の領域に分散して配置されてもよい。これにより、固定領域が複数の領域に分散して配置された符号語の未使用データが変更されるという作用をもたらす。

0019

また、この第1の側面において、上記第1の候補パリティ生成部は、上記情報部から上記第1の候補パリティを生成し、上記第2の候補パリティ生成部は、上記第1の候補パリティと第1のパリティパターンとの論理演算により上記第2の候補パリティを生成してもよい。これにより、第1の候補パリティと第1のパリティパターンとの論理演算により第2の候補パリティが生成されるという作用をもたらす。

0020

また、この第1の側面において、第2のパリティパターンと上記第1の候補パリティとの論理演算により第3の候補パリティを生成する第3の候補パリティ生成部と、上記第2のパリティパターンと上記第2の候補パリティとの論理演算により第4の候補パリティを生成する第4の候補パリティ生成部とをさらに具備し、上記選択部は、上記第1、第2、第3および第4の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択してもよい。これにより、第2のパリティパターンと第1の候補パリティとの論理演算により第3の候補パリティが生成され、第2のパリティパターンと第2の候補パリティとの論理演算により第4の候補パリティが生成されるという作用をもたらす。

0021

また、この第1の側面において、ユーザデータにおける特定の値のビット数を変換する変換処理を行って当該変換処理後の上記ユーザデータと上記変換処理前の上記ユーザデータとのいずれかを上記第1の候補パリティ生成部に出力するユーザデータ変換部をさらに具備し、上記第1の候補パリティ生成部は、上記出力されたユーザデータを含む上記第1の情報部から上記第1の候補パリティを生成してもよい。これにより、ユーザデータにおける特定の値のビット数が変換されるという作用をもたらす。

0022

また、本技術の第2の側面は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語をライトデータとしてメモリセルに出力する出力部と、前記メモリセルからリードデータを読み出して前記リードデータを復号する復号部とを具備するメモリコントローラある。これにより、第1および第2の候補パリティのうち所定の条件を満たす選択パリティと選択パリティに対応する上記情報部とからなる符号語が出力されるという作用をもたらす。

0023

また、本技術の第3の側面は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を送信語として出力する出力部と、前記送信語に対応する受信語を受信して復号する復号部とを具備する通信システムである。これにより、第1および第2の候補パリティのうち所定の条件を満たす選択パリティと選択パリティに対応する上記情報部とからなる符号語が出力されるという作用をもたらす。

発明の効果

0024

本技術によれば、データを符号化してメモリセルに書き込むメモリシステムにおいて、メモリセルのデータ保持特性を向上させることができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。

図面の簡単な説明

0025

第1の実施の形態におけるメモリシステムの一構成例を示す全体図である。
第1の実施の形態における可変抵抗素子抵抗分布の一例を示す図である。
第1の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
第1の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
第1の実施の形態における生成行列および符号語の一例を示す図である。
第1の実施の形態における符号語のデータ構成の一例を示す図である。
第1の実施の形態における符号化部の一構成例を示すブロック図である。
第1の実施の形態における候補パリティ生成部の一構成例を示すブロック図である。
第1の実施の形態における選択部の一構成例を示すブロック図である。
第1の実施の形態における復号部の一構成例を示すブロック図である。
第1の実施の形態におけるユーザデータおよび符号語の一例を示す図である。
第1の実施の形態における情報部および候補パリティの一例を示す図である。
第1の実施の形態における不揮発性メモリの一構成を示すブロック図である。
第1の実施の形態におけるストレージの動作の一例を示すフローチャートである。
第1の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。
第1の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。
第1の実施の形態におけるNVRAM側ライト処理の一例を示すフローチャートである。
第1の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。
第1の実施の形態の変形例における候補パリティ生成部の一構成例を示すブロック図である。
第2の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
第2の実施の形態における符号化部の一構成例を示すブロック図である。
第2の実施の形態における選択部の一構成例を示すブロック図である。
第2の実施の形態における情報部および候補パリティの一例を示す図である。
第2の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。
第2の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。
第3の実施の形態における符号語のデータ構造の一例を示す図である。
第4の実施の形態における候補パリティ生成部の一構成例を示すブロック図である。
第5の実施の形態における選択部の一構成例を示すブロック図である。
第5の実施の形態における情報部および候補パリティの一例を示す図である。
第5の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。

実施例

0026

以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(候補パリティのいずれかを選択する例)
2.第2の実施の形態(書換えビット数に基づいて候補パリティのいずれかを選択する例)
3.第3の実施の形態(選択値の配置を変えて候補パリティのいずれかを選択する例)
4.第4の実施の形態(パリティパターンおよび候補パリティから新たに候補パリティを生成し、それらのいずれかを選択する例)
5.第5の実施の形態(最長ランの長さに基づいて候補パリティのいずれかを選択する例)

0027

<1.第1の実施の形態>
[メモリシステムの構成例]
図1は、実施の形態におけるメモリシステムの一構成例を示すブロック図である。このメモリシステムは、ホストコンピュータ100およびストレージ200を備える。

0028

ホストコンピュータ100は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ100は、コマンドおよびデータを生成してストレージ200に信号線109を介して供給する。また、ホストコンピュータ100は、ストレージ200から、読み出されたデータを受け取る。ここで、コマンドは、ストレージ200を制御するためのものであり、例えば、データの書込みを指示するライトコマンドや、データの読出しを指示するリードコマンドを含む。

0029

ストレージ200は、メモリコントローラ300および不揮発性メモリ400を備える。このメモリコントローラ300は、不揮発性メモリ400を制御するものである。メモリコントローラ300は、ホストコンピュータ100からライトコマンドおよびデータを受け取った場合に、そのデータから誤り検出訂正符号ECC:Error detection and Correction Code)を生成する。メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化したデータを書き込む。

0030

また、ホストコンピュータ100からリードコマンドを受け取った場合、メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化されたデータを読み出す。そして、メモリコントローラ300は、符号化されたデータを、符号化前の元のデータに変換(すなわち、復号)する。復号の際に、メモリコントローラ300は、ECCに基づいてデータにおける誤りの検出および訂正を行う。メモリコントローラ300は、訂正したデータをホストコンピュータ100に供給する。

0031

不揮発性メモリ400は、メモリコントローラ300の制御に従って、データを記憶するものである。例えば、ReRAMが不揮発性メモリ400として用いられる。この不揮発性メモリ400は、複数のメモリセルを備え、これらのメモリセルは、複数のブロックに分けられている。ここで、ブロックは、不揮発性メモリ400のアクセス単位であり、セクタとも呼ばれる。ブロックのそれぞれにはメモリアドレス割り当てられている。なお、ReRAMの代わりに、フラッシュメモリ、PCRAM、および、MRAMなどを不揮発性メモリ400として用いてもよい。

0032

図2は、第1の実施の形態におけるReRAMの可変抵抗素子の抵抗分布の一例を示す図である。同図における横軸は、抵抗値を示しており、縦軸は、セルの数の相対的な分布相対値により示している。可変抵抗素子の抵抗状態は、所定の閾値を境に、大きく2つの分布に分かれている。閾値と比較して抵抗値が低い状態は、低抵抗状態(LRS:Low-Resistance State)と呼ばれ、閾値と比較して抵抗値が高い状態は、高抵抗状態(HRS:High-Resistance State)と呼ばれる。不揮発性メモリ400は、可変抵抗素子に電圧印加することにより、その抵抗状態を可逆的に変化させてメモリセルを書き換えることができる。このメモリセルへの電圧印加を止めても抵抗状態が保持されるため、ReRAMは不揮発メモリとして機能することができる。

0033

また、可変抵抗素子のLRSおよびHRSのそれぞれには、論理値「0」および論理値「1」の何れかが対応付けられる。例えば、LRSに論理値「1」が対応付けられ、HRSに論理値「0」が対応付けられる。それぞれの状態に論理値「0」および論理値「1」の何れを対応付けるかは任意である。

0034

HRSのメモリセルに対して、一定以上の電圧が印加されると、そのメモリセルはLRS(「1」)に遷移する。この動作を以下、「セット」動作と称する。一方、LRSのメモリセルに対して、逆方向の電圧が印加されると、そのメモリセルはHRS(「0」)に遷移する。この動作を以下、「リセット」動作と称する。

0035

図2におけるaは、劣化していない可変抵抗素子の抵抗分布の一例を示す図である。劣化していない場合には、「1」が書き込まれたメモリセル全ての抵抗値は閾値より低く、「0」が書き込まれたメモリセル全ての抵抗値は閾値より高くなっている。このため、書き込まれた値と同一の値のビットが読み出され、リードエラーは生じない。

0036

一方、図2におけるbは、劣化が進行した可変抵抗素子の抵抗分布の一例を示す図である。経年劣化やアクセスの繰返しにより劣化が進行すると、「1」が書き込まれたメモリセルの抵抗値が上昇し、閾値を超えるおそれがある。この閾値を超えたメモリセルからは、「0」の値が読み出され、誤りが発生してしまう。また、「0」が書き込まれたメモリセルの抵抗値が低下し、閾値を下回るおそれがある。この閾値を下回ったメモリセルからは、「1」の値が読み出され、誤りが発生してしまう。同図における点線で囲まれた部分は、誤りの生じるメモリセルを示す。

0037

ここで、LRSのメモリセルでは、HRSのメモリセルと比較して誤りが発生しやすい。言い換えれば、HRSのメモリセルのデータ保持特性(リテンション)は、LRSよりも良好である。このため、LRSに「1」が割り当てられている場合、「1」が書き込まれたメモリセルでは、「0」が書き込まれたメモリセルよりも高い頻度で誤りが発生する。ECCが訂正することができる誤りの個数には、上限があるため、誤りの発生頻度が高いほど、訂正不能となってデータを保持することができなくなる可能性が高くなる。したがって、「1」のビット数が少ないほど、不揮発性メモリ400のデータ保持特性が向上する。

0038

[メモリコントローラの構成例]
図3は、第1の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。このメモリコントローラ300は、RAM(Random Access Memory)312、CPU(Central Processing Unit)313、ECC処理部314およびROM(Read Only Memory)305を備える。また、メモリコントローラ300は、システムインターフェース311、バス316およびメモリインターフェース317を備える。

0039

RAM312は、CPU313が実行する処理において必要となるデータを一時的に保持するものである。CPU313は、メモリコントローラ300全体を制御するものである。ROM315は、CPU313が実行するプログラム等を記憶するものである。システムインターフェース311は、ホストコンピュータ100との間でデータやコマンドを相互に交換するものである。バス316は、RAM312、CPU313、ECC処理部314、ROM315、システムインターフェース311およびメモリインターフェース317が相互にデータを交換するための共通の経路である。メモリインターフェース317は、不揮発性メモリ400との間でデータやコマンドを相互に交換するものである。

0040

ECC処理部314は、符号化対象のデータ(ユーザデータなど)を符号化し、また、符号化されたデータを復号するものである。ここで、ユーザデータは、ホストコンピュータ100により生成され、メモリコントローラ300に入力されたデータである。ユーザデータの符号化においてECC処理部314は、ユーザデータを含む情報部にパリティを付加することにより一定の単位で符号化する。一定の単位で符号化された個々のデータを以下、「符号語」と称する。これらの固定長の符号語からなる符号は、線形ブロック符号と呼ばれる。そして、ECC処理部314は、符号語をライトデータとして不揮発性メモリ400にバス316を介して供給する。

0041

また、ECC処理部314は、符号化されたリードデータを元のユーザデータに復号する。この復号において、ECC処理部314は、パリティを使用して符号語の誤りを検出および訂正する。ECC処理部314は、復号した元のユーザデータを訂正データとしてホストコンピュータ100にバス316を介して供給する。

0042

このECC処理部314において誤り検出訂正符号として、例えば、BCH符号が用いられる。このBCH符号の定義体有限体)として、例えば、GF(216)が用いられるものとする。このGF(216)上の多項式は、例えば、次の式により表される。
p(x)=x16+x5+x3+x2+1 ・・・式1

0043

この有限体の原始元をαとすると、GF(216)の元は、全てαのべき乗で表すことができる。また、符号化においては、次の式により表されるG(x)が生成多項式として用いられる。



式2において、LCM[]は、[]内の各々の多項式の最小公倍多項式を表わす。また、Mi(x)は、αiを根として持つ最小次数の多項式(最小多項式)である。例えばα(i=1)に対応する最小多項式はx16+x5+x3+x2+1であり、α3(i=3)に対応する最小多項式はx16+x8+x6+x5+x4+x+1である。

0044

式2の生成多項式G(x)により生成されるBCH符号は、tビットまでの誤りを訂正することができる。このBCH符号における符号語は生成多項式G(x)で割り切れる多項式の係数ビット列に置き換えたものである。1ビットの誤りを訂正する場合には、16ビットのパリティが生成され、tビットまでの誤りを訂正する場合には、t×16ビット以下のパリティが生成される。BCH符号の符号化および復号の手順の詳細については、例えば、「今井秀樹著、『符号理論』、社団法人電子情報通信学会、1990年3月、p.151−155」に記載されている。

0045

なお、ECC処理部314は、BCH符号に符号化しているが、誤りを検出することができる線形ブロック符号であれば、BCH符号以外の符号に符号化してもよい。ECC処理部314は、例えば、CRC(Cyclic Redundancy Check)符号、ハミング符号拡張ハミング符号や、RS(Reed-Solomon)符号に符号化してもよい。

0046

図4は、第1の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。このメモリコントローラ300は、システムインターフェース311、符号化部320、復号部370、コマンド制御部380およびメモリインターフェース317を備える。図4における符号化部320および復号部370は、図3におけるECC処理部314などにより実現される。また、図4におけるコマンド制御部380は、図3
RAM312、CPU313およびROM315などにより実現される。なお、メモリコントローラ300は、特許請求の範囲に記載の符号化装置の一例である。

0047

コマンド制御部380は、アクセス先アドレスを指定するコマンドをデコードするものである。このコマンド制御部380は、デコードした結果に基づいて、制御信号を生成してメモリインターフェース317を介して不揮発性メモリ400に供給する。この制御信号は、アクセス先のアドレスを指定して、不揮発性メモリ400に読出しや書込みを要求する信号である。

0048

符号化部320は、ユーザデータを符号化するものである。符号化部320は、ユーザデータを符号化してライトデータを生成し、メモリインターフェース317を介して不揮発性メモリ400に供給する。

0049

復号部370は、不揮発性メモリ400から読み出されたリードデータを復号するものである。この復号部370は、リードデータの誤りを検出および訂正し、訂正後のユーザデータを訂正データとしてホストコンピュータ100にシステムインターフェース311を介して供給する。

0050

図5は、第1の実施の形態における生成行列および符号語の一例を示す図である。同図におけるaは、第1の実施の形態における、符号語を生成する際に用いられる生成行列Gの一例を示す図である。この生成行列の行数はk(kは整数)であり、列数はn(nは、kより大きな整数)である。同図におけるbは、生成行列および情報部から符号語を求める計算式の一例である。ここで、情報部のデータサイズは、ユーザデータを符号化する単位より大きく、この情報部内には、ユーザデータが、それ以外の非ユーザデータとともに格納される。同図におけるbに示すように、生成行列Gと、情報部との積により符号語が生成される。この符号語は、kビットの情報部と、n−kビットのパリティとを含む。このように、情報部および生成行列の積によりパリティが生成されるため、情報部を一部でも変更すると、その変更後の情報部に対応するパリティも変化する。

0051

[符号語の構成例]
図6は、第1の実施の形態における符号語のデータ構成の一例を示す図である。符号語は、4バイトの情報部と2バイトのパリティとから構成される。この情報部は、3バイトのユーザデータと1バイトの非ユーザデータとからなる。そして、非ユーザデータは、4ビットの管理データと4ビットの未使用データとからなる。メモリシステムの拡張性やアクセス単位の都合により、符号語には、ある程度の余裕をもったサイズの非ユーザデータが設けられており、管理データ以外の余った部分に未使用データが割り当てられる。なお、符号語内の各データのデータサイズは、図6に例示したサイズに限定されない。

0052

ここで、管理データは、ユーザデータに対して符号化時に行われた変換処理を示すデータである。例えば、ユーザデータを反転する処理が変換処理として行われた場合には、反転したか否かを示す反転ビットが管理データに格納される。

0053

また、未使用データは、非ユーザデータのうち、ユーザデータおよび管理データのいずれにも用いられないデータである。この未使用データは、2ビットの固定領域と2ビットの可変領域とからなる。固定領域には、固定値のデータが格納される領域である。例えば、固定領域の全ビットの値は「0」に固定される。一方、可変領域は、複数の値のいずれかのデータが格納される領域である。例えば、2進数で「00」、「01」、「10」および「11」のいずれかが符号化部320により選択され、その値のデータが格納される。この可変領域に格納されるデータの値を以下、「選択値」と称する。なお、未使用データに固定領域および可変領域の両方を設けているが、固定領域を設けず、可変領域のみとしてもよい。

0054

これらのデータは、例えば、符号語の右端から順に、パリティ、固定領域、可変領域、管理データ、および、ユーザデータの順で配置される。すなわち、右端から0乃至15ビット目にパリティが格納され、16および17ビット目が固定領域として用いられる。また、右端から18および19ビット目に選択値が格納され、20乃至23ビット目に管理データが格納され、24ビット目以降にユーザデータが格納される。

0055

前述したように、情報部を一部でも変更すると、その情報部に対応するパリティも変化する。このため、符号化部320は、選択値の変更により、その変更後の情報部に対応するパリティを変化させることができる。例えば、符号化部320は、選択値を4パターンに変化させることにより、4パターンのパリティを生成することができる。

0056

[符号化部の構成例]
図7は、第1の実施の形態における符号化部320の一構成例を示すブロック図である。この符号化部320は、ライトバッファ321、ユーザデータ変換部322、ECC符号化器323、候補パリティ生成部330、選択部340、および、ライトデータ出力部324を備える。

0057

ライトバッファ321は、ホストコンピュータ100からのユーザデータを保持するものである。ユーザデータ変換部322は、必要に応じて、ユーザデータに対して変換処理を行うものである。例えば、ユーザデータ変換部322は、ユーザデータの少なくとも一部のビットを反転する処理を行う。例えば、ユーザデータの1/3または2/3のビットを反転する処理や、全体を反転する処理が行われる。ユーザデータ変換部322は、反転前に、ユーザデータの「1」のビット数を計数する。以下、データ内の特定の値(例えば、「1」)のビット数を、そのデータの「重み」と称する。前述したように「0」を保持するメモリセルのリテンションは、「1」を保持するメモリセルより良好である。このため、符号化部320は、「1」のビット数(すなわち、重み)が低減するか否かにより、反転するか否かを判断し、また、反転する部分を決定する。重みが低減するようにユーザデータを変換して書き込むことにより、そのユーザデータを保持するメモリセルのリテンションを向上させることができる。

0058

ユーザデータ変換部322は、ユーザデータのうち反転した部分を示す反転ビットを格納した理データと所定の選択値(例えば、「00」)を設定した未使用データとを生成し、それらとユーザデータとを格納した情報部をECC符号化器323に供給する。

0059

なお、ユーザデータ変換部322は、ユーザデータの少なくとも一部の反転処理によりユーザデータを変換しているが、重みが変わる処理であれば、反転処理以外の処理により変換してもよい。ユーザデータ変換部322は、例えば、所定の固定パターンとユーザデータとにおいて対応するビットごとにXOR(排他的論理和)を演算する処理を行ってもよい。

0060

ECC符号化器323は、情報部を符号化するものである。このECC符号化器323は、式2の生成多項式G(x)と情報部とから、情報部およびパリティからなる符号語を生成する。そして、ECC符号化器323は、その情報部をライトデータ出力部324に供給し、パリティを候補パリティC0として候補パリティ生成部330に供給する。なお、ECC符号化器323は、特許請求の範囲に記載の第1候補パリティ生成部の一例である。

0061

候補パリティ生成部330は、一部のデータを変更した情報部の誤りを検出するためのパリティを候補パリティとして生成するものである。この候補パリティ生成部330は、未使用データに「00」以外の選択値(「01」など)を設定した情報部に対応するパリティを候補パリティとして生成する。候補パリティ生成部330は、例えば、選択値「01」の情報部と、選択値「10」の情報部と、選択値「11」の情報部とのそれぞれについて候補パリティを生成する。これらの候補パリティをC1、C2およびC3とする。候補パリティ生成部330は、ECC符号化器323からの候補パリティC0と、自身が生成した候補パリティC1、C2およびC3とを選択部340に供給する。

0062

なお、候補パリティ生成部330が生成する候補パリティの個数は、1つ以上であればよく、3つに限定されない。生成する候補パリティの個数に応じて、選択値が格納される可変領域のビット数を変更すればよい。例えば、3ビットの可変領域を設けた場合には、ECC符号化器323および候補パリティ生成部330は、合計で8個の候補パリティを生成することができる。

0063

選択部340は、候補パリティC0、C1、C2およびC3のうち、所定の条件を満たすパリティを選択するものである。この選択部340は、候補パリティごとに、その候補パリティに対応する未使用データと、候補パリティとからなる組の重みを計数して比較する。そして、選択部340は、候補パリティおよび未使用データの組のうち重みが最も少ないものを選択する。選択部340は、選択した組の候補パリティを選択パリティとして、その選択パリティに対応する選択値とともにライトデータ出力部324に供給する。

0064

前述したように「0」を保持するメモリセルのリテンションは、「1」を保持するメモリセルより良好である。このため、符号化部320は、「1」のビット数(すなわち、重み)が最小の候補パリティおよび未使用データを選択して書き込むことにより、それらのデータを保持するメモリセルのリテンションを向上させることができる。

0065

なお、選択部340は「1」の値のビット数を「重み」として計数しているが、「0」の値のビット数を重みとして計数してもよい。

0066

ライトデータ出力部324は、選択パリティに対応する情報部と、選択パリティとからなる符号語をライトデータとして出力するものである。このライトデータ出力部324は、選択パリティに対応する選択値により、情報部の未使用データを更新し、その情報部と選択パリティとからなる符号語をメモリインターフェース317に出力する。

0067

[候補パリティ生成部の構成例]
図8は、第1の実施の形態における候補パリティ生成部330の一構成例を示すブロック図である。この候補パリティ生成部330は、パリティパターン生成部331、332および333と、排他的論理和演算部334、335および336とを備える。

0068

パリティパターン生成部331は、未使用データに選択値「01」を設定し、未使用データ以外の全ビットに「0」に設定した情報部から、パリティを生成するものである。パリティは、例えば、情報部と生成多項式G(x)との積により生成される。このパリティパターン生成部331は、生成したパリティをパリティパターンP1として排他的論理和演算部334に供給する。

0069

パリティパターン生成部332は、未使用データに選択値「10」を設定し、未使用データ以外の全ビットに「0」を設定した情報部から、パリティを生成するものである。このパリティパターン生成部332は、生成したパリティをパリティパターンP2として排他的論理和演算部335に供給する。

0070

パリティパターン生成部333は、未使用データに選択値「11」を設定し、未使用データ以外の全ビットに「0」を設定した情報部から、パリティを生成するものである。このパリティパターン生成部333は、生成したパリティをパリティパターンP3として排他的論理和演算部336に供給する。

0071

排他的論理和演算部334は、候補パリティC0とパリティパターンP1とにおいて、対応するビットごとにXOR(排他的論理和)を演算するものである。この排他的論理和演算部334は、演算結果を候補パリティC1として選択部340に供給する。なお、排他的論理和演算部334は、特許請求の範囲に記載の第2候補パリティ生成部の一例である。

0072

排他的論理和演算部335は、候補パリティC0とパリティパターンP2とにおいて、対応するビットごとにXORを演算するものである。この排他的論理和演算部335は、演算結果を候補パリティC2として選択部340に供給する。なお、排他的論理和演算部335は、特許請求の範囲に記載の第3候補パリティ生成部の一例である。

0073

排他的論理和演算部336は、候補パリティC0とパリティパターンP3とにおいて、対応するビットごとにXORを演算するものである。この排他的論理和演算部336は、演算結果を候補パリティC3として選択部340に供給する。

0074

[選択部の構成例]
図9は、第1の実施の形態における選択部340の一構成例を示すブロック図である。この選択部340は、重みカウンタ341、342、343および344と、加算器346、347および348と、比較部345とを備える。

0075

重みカウンタ341は、候補パリティC3の「1」の個数(重み)を計数するものである。この重みカウンタ341は、計数値を加算器346に供給する。

0076

加算器346は、候補パリティC3に対応する未使用データの重みの個数(例えば、「2」)を候補パリティC3の重みの計数値に加算するものである。この加算器346は、加算後の計数値CNT3を比較部345に供給する。

0077

重みカウンタ342は、候補パリティC2の重みを計数するものである。この重みカウンタ342は、計数値を加算器347に供給する。

0078

加算器347は、候補パリティC2に対応する未使用データの重みの個数(例えば、「1」)を候補パリティC2の重みの計数値に加算するものである。この加算器347は、加算後の計数値CNT2を比較部345に供給する。

0079

重みカウンタ343は、候補パリティC1の重みを計数するものである。この重みカウンタ343は、計数値を加算器348に供給する。

0080

加算器348は、候補パリティC1に対応する未使用データの重みの個数(例えば、「1」)を候補パリティC1の重みの計数値に加算するものである。この加算器348は、加算後の計数値CNT1を比較部345に供給する。なお、重みカウンタ343および加算器348は、特許請求の範囲に記載の第2の重みカウンタの一例である。

0081

重みカウンタ344は、候補パリティC0の重みを計数するものである。この重みカウンタ344は、計数値CNT0を比較部345に供給する。なお、重みカウンタ344は、特許請求の範囲に記載の第1の重みカウンタの一例である。

0082

比較部345は、候補パリティC0乃至C3のうち、対応する重み(CNT0乃至CNT3)が最小の候補パリティを選択パリティとして選択するものである。比較部345は、選択した選択パリティと、その選択パリティに対応する選択値とをライトデータ出力部324に供給する。

0083

[復号部の構成例]
図10は、第1の実施の形態における復号部370の一構成例を示すブロック図である。この復号部370は、リードバッファ371、ユーザデータ逆変換部372およびECC復号器373を備える。

0084

ECC復号器373は、不揮発性メモリ400からリードデータを読み出し、符号化部320の符号化手順と対応する復号手順により、リードデータを復号するものである。このECC復号器373は、復号した情報部をユーザデータ逆変換部372に供給する。

0085

ユーザデータ逆変換部372は、情報部内のユーザデータに対し、符号化部320の変換処理と対応する逆変換処理を行うものである。このユーザデータ逆変換部372は、例えば、情報部内の管理データ内の反転ビットに基づいて、ユーザデータの少なくとも一部を反転して元のデータに戻す処理を逆変換処理として行う。ユーザデータ逆変換部372は、逆変換処理後のユーザデータをリードバッファ371に供給する。

0086

リードバッファ371は、ユーザデータ逆変換部372からのユーザデータを保持し、訂正データとしてシステムインターフェース311に供給するものである。

0087

図11は、第1の実施の形態におけるユーザデータおよび符号語の一例を示す図である。同図におけるaは、反転前のユーザデータの一例を示し、同図におけるbは、一部を反転したユーザデータの一例を示す。同図における「*」は「1」の値のビットの位置を示す。また、同図におけるbの点線で囲った部分は、反転されたビット列を示す。例えば、3バイトのユーザデータのうち1バイトが反転される。これにより、同図におけるbに例示するように重みが低減する。

0088

図11におけるcは、第1の実施の形態における符号語の一例を示す図である。ユーザデータの左端の1バイトが反転されたため、左端の部分を反転したことを示す「1」の反転ビットが管理データの左端のビットに設定される。また、未使用データには、選択値「00」が設定される。ECC符号化器323は、それらの管理データおよび未使用データと反転後のユーザデータとからなる情報部を生成し、その情報部から候補パリティC0を生成する。

0089

図12は、第1の実施の形態における情報部および候補パリティの一例を示す図である。同図におけるaは、ユーザデータと選択値「00」の未使用データと候補パリティC0とからなる符号語を示す。

0090

候補パリティ生成部330は、選択値「01」、「10」および「11」を設定し、それ以外の全ビットを「0」に設定した情報部のそれぞれから、パリティパターンP1、P2およびP3を生成する。

0091

図12におけるbは、パリティパターンP1を含む符号語を示し、同図におけるcはパリティパターンP2を含む符号語を示す。また、同図におけるdはパリティパターンP3を含む符号語を示す。そして、候補パリティ生成部330は、候補パリティC0とパリティパターンP1、P2およびP3とについて、対応するビットごとにXOR演算を行い、候補パリティC1、C2およびC3を生成する。

0092

図12におけるeは、候補パリティC1を含む符号語を示し、同図におけるfは候補パリティC2を含む符号語を示す。また、同図におけるgは候補パリティC3を含む符号語を示す。

0093

ここで、BCH符号などの線形ブロック符号においては、符号語同士を加算した結果は、その符号における符号語になることが知られている。したがって、パリティパターンP1を含む符号語と、候補パリティC0を含む符号語とについて、対応するビットごとにXOR演算(言い換えれば加算)を行った結果は、符号語となる。このため、その加算結果の符号語における候補パリティC0により、対応する情報部の誤りを検出および訂正することができる。したがって、復号部370は、選択パリティについてXOR演算などを行う必要がなく、そのまま復号を行うことができる。

0094

そして、候補パリティ生成部330は、候補パリティC0乃至C3と、対応する選択値とにおける重みを計数する。図12における「*」は、計数されたビットの位置を示す。例えば、候補パリティC0および選択値「00」の「*」の個数(重み)は、10進数で「8」である。また。候補パリティC1および選択値「01」の重みは、10進数で「8」であり、候補パリティC2および選択値「10」の重みは、10進数で「5」である。候補パリティC3および選択値「11」の重みは、10進数で「8」である。

0095

これらの重みの最小値は「5」であり、対応する候補パリティC2が選択される。なお、重みが最小となる候補パリティが2つ以上の場合には、それらのいずれか1つが任意に選択される。

0096

一般的なメモリコントローラのように、パリティおよび未使用データをそのまま書き込む構成では、それらを書き込むメモリセルのリテンションを向上させることができない。しかし、図12に例示したように、符号化部320は、情報部の一部(すなわち、未使用データ)を変更して、複数の候補パリティを生成し、それらのうち重みが最小のパリティを選択する。このため、パリティおよび未使用データを書き込むメモリセルの重みが小さくなる。例えば、図12の例においては、重みを「8」から「5」に低減することができる。これにより、メモリセルのリテンションを向上させることができる。

0097

なお、パリティパターンの生成およびXOR演算により候補パリティC1乃至C3を生成しているが、この構成に限定されない。例えば、符号化部320は、図12におけるe乃至gの未使用データのみを変更した情報部と、生成多項式G(x)との積により、候補パリティC1等を生成してもよい。ただし、パリティパターンの生成およびXOR演算を行う場合の方が演算量が少なくて済む。例えば、情報部の未使用データ以外の全ビットを「0」とした情報部からパリティパターンを生成する場合には、未使用データ以外が「0」であるため、ユーザデータが格納されている場合と比較して演算量が少なくなる。さらにXOR演算も行われるが、この演算を考慮しても全体の演算量は低減する。したがって、符号化部320は、パリティパターンの生成およびXOR演算により候補パリティC1等を生成することが望ましい。

0098

また、符号化部320は、ユーザデータを変換しているが、ユーザデータを変換せずにそのまま符号化してもよい。この場合には、復号部370が、逆変換を行わず復号のみを行う。

0099

また、メモリシステムに符号化部320を設けているが、符号化を行うシステム(通信システム)であれば、メモリシステム以外のシステムに符号化部320を設けてもよい。例えば、ハイレベルのビットを送信するよりも、ローレベルのビットを送信する方が消費電力が低減する通信システムであれば、符号化部320が最小の重みとなるパリティを選択することで消費電力を低減することができる。

0100

[不揮発性メモリの構成例]
図13は、第1の実施の形態における不揮発性メモリ400の一構成例を示すブロック図である。この不揮発性メモリ400は、データバッファ410、メモリセルアレイ420、ドライバ430、アドレスデコーダ440、バス450、制御インターフェース460、および、メモリ制御部470を備える。

0101

データバッファ410は、メモリ制御部470の制御に従って、ライトデータやリードデータをアクセス単位で保持するものである。メモリセルアレイ420は、マトリックス
状に配列された複数のメモリセルを備える。各々のメモリセルとして、ReRAMなどの不揮発性記憶素子が用いられる。

0102

ドライバ430は、アドレスデコーダ440により選択されたメモリセルに対してデータの書込み、または、データの読出しを行うものである。アドレスデコーダ440は、コマンドにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。バス450は、データバッファ410、メモリセルアレイ420、アドレスデコーダ440、メモリ制御部470および制御インターフェース460が相互にデータを交換するための共通の経路である。制御インターフェース460は、メモリコントローラ300と不揮発性メモリ400とがデータやコマンドを相互に交換するためのインターフェースである。

0103

メモリ制御部470は、ドライバ430およびアドレスデコーダ440を制御して、データの書込み、または、読出しを行わせるものである。メモリ制御部470は、書込みを指示する制御信号およびライトデータを受け取った場合には、その制御信号の指定するアドレスに書き込まれているデータをプレリードデータとして読み出す。メモリ制御部470は、ライトデータとプレリードデータとをビット単位で比較し、ライトデータにおいて「1」であり、かつ、プレリードデータにおいて「0」のビットを書換え対象とする。メモリ制御部470は、それらの書換え対象のビットを「1」に書き換える。次に、メモリ制御部470は、ライトデータとセット処理後のプレリードデータとをビット単位で比較し、ライトデータにおいて「0」であり、かつ、プレリードデータにおいて「1」のビットを書換え対象とする。メモリ制御部470は、それらの書換え対象のビットを「0」に書き換える。

0104

また、メモリ制御部470は、読出しを指示する制御信号を受け取ると、アドレスデコーダ440およびドライバ430を制御してメモリコントローラ300へリードデータを出力させる。

0105

[ストレージの動作例]
図14は、第1の実施の形態におけるストレージ200の動作の一例を示すフローチャートである。この動作は、例えば、ホストコンピュータ100によりストレージ200に対して初期化が指示されたときに開始する。

0106

不揮発性メモリ400は、メモリセルアレイ420を初期化する(ステップS901)。メモリコントローラ300は、ホストコンピュータ100からのコマンドをデコードする(ステップS902)。メモリコントローラ300は、ホストコンピュータ100からコマンドを受け取った場合に、そのコマンドがライトコマンドであるか否かを判断する(ステップS903)。ここでは、ホストコンピュータ100からのコマンドは、ライトコマンドおよびリードコマンドのうちのいずれかであるものとする。

0107

ライトコマンドである場合には(ステップS903:Yes)、メモリコントローラ300は、コントローラ側ライト処理を実行する(ステップS910)。そして、不揮発性メモリ400は、NVRAM側ライト処理を実行する(ステップS930)。

0108

一方、リードコマンドである場合には(ステップS903:No)、メモリコントローラ300は、コントローラ側リード処理を実行する(ステップS950)。そして、不揮発性メモリ400は、データを読み出し、メモリコントローラ300に転送する(ステップS904)。ステップS930またはS904の後、ストレージ200は、ステップS902に戻る。

0109

図15は、第1の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。メモリコントローラ300は、ユーザデータの重みを計数し(ステップS911)、計数値に基づいてユーザデータの少なくとも一部を反転する(ステップS912)。メモリコントローラ300は、反転フラグを管理データに格納し(ステップS913)、反転処理後のユーザデータを含む情報部を、その情報部および候補パリティC0からなる符号語に符号化する(ステップS914)。

0110

メモリコントローラ300は、複数の候補パリティのいずれかを選択するパリティ選択処理を実行する(ステップS920)。そして、メモリコントローラ300は、選択パリティと、対応する情報部とを含むライトデータを不揮発性メモリ400に出力し(ステップS915)、コントローラ側ライト処理を終了する。

0111

図16は、第1の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。メモリコントローラ300は、選択値ごとに候補パリティを生成し(ステップS921)、候補パリティごとに重みを計数する(ステップS922)。メモリコントローラ300は、重みが最小になる候補パリティを選択し(ステップS923)、選択パリティ、および、対応する選択値を符号語に格納する(ステップS924)。ステップS924の後、メモリコントローラ300は、パリティ選択処理を終了する。

0112

図17は、第1の実施の形態におけるNVRAM側ライト処理の一例を示すフローチャートである。不揮発性メモリ400は、ライトデータを取得する(ステップS931)。不揮発性メモリ400は、書込み先のアドレスに書き込まれているデータをプレリードする(ステップS932)。不揮発性メモリ400は、ライトデータと、プレリードデータとにおいて対応するビットを比較し、リセットマスクデータを生成する(ステップS933)。このリセットマスクデータは、ライトデータにおいて「0」であり、かつ、プレリードデータにおいて「1」であるビットについてはリセットする旨を示し、それ以外のビットについてはマスクする旨を示す。

0113

不揮発性メモリ400は、リセットマスクデータによりリセットする旨が示されたビットのみを「1」から「0」に書き換える処理(リセット処理)を行う(ステップS934)。不揮発性メモリ400は、リセット処理後のプレリードデータを読み出し、ベリファイエラーが生じたか否かを判断する(ステップS935)。

0114

ベリファイエラーが生じなかった場合には(ステップS935:No)、不揮発性メモリ400は、ライトデータと、リセット処理後のプレリードデータとにおいて対応するビットを比較し、セットマスクデータを生成する(ステップS936)。このセットマスクデータは、ライトデータにおいて「1」であり、かつ、プレリードデータにおいて「0」であるビットについてはセットする旨を示し、それ以外のビットについてはマスクする旨を示す。

0115

不揮発性メモリ400は、セットマスクデータによりセットする旨が示されたビットのみを「0」から「1」に書き換える処理(セット処理)を行う(ステップS937)。不揮発性メモリ400は、セット処理後のプレリードデータを読み出し、ベリファイエラーが生じたか否かを判断する(ステップS938)。

0116

リセット処理においてエラーが発生した場合(ステップS935:Yes)、または、セット処理においてエラーが発生した場合(ステップS938:Yes)、不揮発性メモリ400は、ライトエラーをホストコンピュータ100に通知する(ステップS939)。セット処理においてエラーが発生していない場合(ステップS938:No)、または、ステップS939の後、不揮発性メモリ400は、メモリコントローラ300にステータスを転送する(ステップS940)。ステップS940の後、不揮発性メモリ400は、NVRAM側ライト処理を終了する。

0117

図18は、第1の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。メモリコントローラ300は、リードデータを取得し(ステップS951)、復号する(ステップS952)。メモリコントローラ300は、管理データに基づいて、ユーザデータを反転する(ステップS953)。メモリコントローラ300は、ユーザデータを訂正データとしてホストコンピュータ100に出力し(ステップS954)、コントローラ側リード処理を終了する。

0118

このように、本技術の第1の実施の形態によれば、符号化部320は、情報部内の可変領域に複数の異なる値を設定して候補パリティを生成し、それらのうち重みが最小となるパリティを選択するため、メモリセルのデータ保持特性を向上させることができる。

0119

[変形例]
上述の第1の実施の形態では、候補パリティ生成部330は、行列演算によりパリティパターンを生成していたが、符号語のデータサイズが大きくなるほど、演算量が増大するおそれがある。この第1の実施の形態における変形例の候補パリティ生成部330は、演算量を低減した点において第1の実施の形態と異なる。

0120

図19は、第1の実施の形態の変形例における候補パリティ生成部330の一構成例を示すブロック図である。この変形例の候補パリティ生成部330は、パリティパターン生成部331、332および333の代わりに、パリティパターン保持部337を備える点において第1の実施の形態と異なる。

0121

パリティパターン保持部337は、選択値ごとに、予め演算しておいたパリティパターン(P1、P2およびP3など)を保持するものである。これらのパリティパターンは。排他的論理和演算部334、335および336のそれぞれにより読み出される。

0122

このように、本技術の第1の実施の形態の変形例によれば、候補パリティ生成部330は、予め演算しておいたパリティパターンを保持するため、パリティパターンを求める行列演算を行う必要がなくなる。

0123

<2.第2の実施の形態>
上述の第1の実施の形態では、メモリコントローラ300は、重みが最小となる候補パリティを選択パリティとして選択していた。しかし、選択パリティにより、書き換えるビット数が多くなる場合には、メモリセルのリテンションを十分に向上することができないおそれがある。このため、書き換えるビット数を低減することが望ましい。この第2の実施の形態のメモリコントローラ300は、書き換えるビット数を低減した点において第1の実施の形態と異なる。

0124

図20は、第2の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。この第2の実施の形態のメモリコントローラ300は、コマンド制御部380の代わりにコマンド制御部381を備える点において第1の実施の形態と異なる。

0125

コマンド制御部381は、ライトコマンドを受け取ると、書込みとプレリードデータの出力とを要求する制御信号を生成して不揮発性メモリ400に供給する。この制御信号に従ってメモリコントローラ300は、ライトデータの書込み前のプレリードデータをメモリコントローラ300に出力する。符号化部320は、このプレリードデータと、符号語とをビット単位で比較して書き換えるビット数が最小になるライトデータを生成する。

0126

図21は、第2の実施の形態における符号化部320の一構成例を示すブロック図である。この第2の実施の形態の符号化部320は、ユーザデータ変換部322および選択部340の代わりにユーザデータ変換部325および選択部350を備える点において第1の実施の形態と異なる。

0127

ユーザデータ変換部325は、プレリード内のユーザデータおよび管理データからなる組を取得する。そして、ユーザデータ変換部325は、反転前のユーザデータおよび管理データにおいて、プレリードデータ内の対応するビットと値の異なるビットの個数を計数する。ユーザデータ変換部325は、その計数値に基づいて、書換えビット数が最小になるように反転処理を行い、その反転処理後のユーザデータを含む情報部をECC符号化器323に供給する。

0128

また、選択部350は、プレリード内の未使用データおよびパリティからなる組を取得する。そして、ユーザデータ変換部325は、候補パリティおよび未使用データからなる組のそれぞれについて、プレリードデータ内の対応するビットと値の異なるビットの個数を計数する。ユーザデータ変換部325は、計数値(すなわち、書き換えるビット数)が最小となる組の候補パリティを選択する。

0129

図22は、第2の実施の形態における選択部350の一構成例を示すブロック図である。この選択部350は、未使用データ保持部351、排他的論理和演算部352乃至355と、書換えビット数カウンタ356乃至359と、比較部345とを備える。

0130

未使用データ保持部351は、異なる選択値が設定された複数の未使用データを保持するものである。これらの未使用データは、排他的論理和演算部352乃至355により読み出される。

0131

排他的論理和演算部352は、プレリードデータ内のパリティおよび未使用データと、候補パリティC3および対応する未使用データとのそれぞれについて、対応するビットごとにXOR演算を行うものである。候補パリティC3に対応する未使用データとして、「1100」が未使用データ保持部351から読み出される。排他的論理和演算部352は、演算結果を書換えビット数カウンタ356に供給する。

0132

排他的論理和演算部353は、プレリードデータ内のデータと、候補パリティC2および対応する未使用データ「1000」とのそれぞれについて、対応するビットごとにXOR演算を行うものである。この排他的論理和演算部353は、演算結果を書換えビット数カウンタ357に供給する。

0133

排他的論理和演算部354は、プレリードデータ内のデータと、候補パリティC1および対応する未使用データ「0100」とのそれぞれについて、対応するビットごとにXOR演算を行うものである。この排他的論理和演算部354は、演算結果を書換えビット数カウンタ358に供給する。

0134

排他的論理和演算部355は、プレリードデータ内のデータと、候補パリティC0および対応する未使用データ「0000」とのそれぞれについて、対応するビットごとにXOR演算を行うものである。この排他的論理和演算部355は、演算結果を書換えビット数カウンタ359に供給する。

0135

書換えビット数カウンタ356は、排他的論理和演算部352の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ356は、計数値CNT3を比較部345に供給する。

0136

書換えビット数カウンタ357は、排他的論理和演算部353の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ357は、計数値CNT2を比較部345に供給する。

0137

書換えビット数カウンタ358は、排他的論理和演算部354の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ358は、計数値CNT1を比較部345に供給する。

0138

書換えビット数カウンタ359は、排他的論理和演算部355の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ359は、計数値CNT0を比較部345に供給する。第2の実施の形態の比較部345の構成は、第1の実施の形態と同様である。

0139

図23は、第2の実施の形態における情報部および候補パリティの一例を示す図である。同図におけるaは、ユーザデータと選択値「00」の未使用データと候補パリティC0とからなる符号語を示す。同図におけるbは、プレリードデータの一例を示す図である。また、図22におけるcは、候補パリティC1を含む符号語を示し、同図におけるdは候補パリティC2を含む符号語を示す。また、同図におけるeは候補パリティC3を含む符号語を示す。

0140

候補パリティ生成部330は、プレリードデータ内のパリティおよび未使用データと、候補パリティおよび対応する未使用データとをビット単位で比較する。この比較結果より、候補パリティ生成部330は、それぞれの候補パリティについて書換えビット数を求める。

0141

図23において「*」は、書換えビットの位置を示す。例えば、候補パリティC0および未使用データ「0000」では、書換えビット数が10進数で「12」個になる。候補パリティC1および未使用データ「0100」では、書換えビット数が10進数で「9」個になり、候補パリティC2および未使用データ「1000」では、書換えビット数が10進数で「13」個になる。候補パリティC3および未使用データ「1100」では、書換えビット数が10進数で「12」個になる。これらのうち、書換えビット数が最小となる候補パリティC2が選択される。これにより、メモリセルの書換えビット数が低減し、メモリセルのリテンションを向上させることができる。

0142

図24は、第2の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。この第2の実施の形態のコントローラ側ライト処理は、ステップS911の代わりに、ステップS916およびS917を実行する点において第1の実施の形態と異なる。

0143

メモリコントローラ300は、プレリードデータを取得し(ステップS916)、反転前のユーザデータについて書換えビット数を計数する(ステップS917)。ステップS917の後、メモリコントローラ300は、ステップS912以降を実行する。

0144

図25は、第2の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。第2の実施の形態のパリティ選択処理は、ステップS922およびS923の代わりにステップS925およびS926を実行する点において第1の実施の形態と異なる。

0145

メモリコントローラ300は、候補パリティを生成し(ステップS921)、候補パリティごとに書換えビット数を計数する(ステップS925)。メモリコントローラ300は、書換えビット数が最小になる候補パリティを選択し(ステップS926)、ステップS924を実行する。

0146

このように、本技術の第2の実施の形態によれば、符号化部320は、候補パリティのうち書換えビット数が最小になるパリティを選択するため、メモリセルの書換えビット数を低減してメモリセルのデータ保持特性を向上させることができる。

0147

<3.第3の実施の形態>
上述の第1の実施の形態では符号語において、右端からパリティ、固定領域、可変領域、管理データ、および、ユーザデータの順でデータが配置されていた。しかし、この順では、重みが十分に低減しないことがあるため、重みが低減しやすい順序でデータを配置することが望ましい。第3の実施の形態のメモリコントローラ300は、データ構造の異なる符号語を生成する点において第1の実施の形態と異なる。

0148

図26は、第3の実施の形態における符号語のデータ構造の一例を示す図である。同図における灰色の領域は、固定領域を示し、斜線の領域は、可変領域を示す。同図におけるaは、第3の実施の形態における可変領域の位置を変えた符号語のデータ構造の一例を示す図である。この符号語は、可変領域の位置と固定領域の位置とが互いに入れ替えられている点において第1の実施の形態と異なる。すなわち、符号語の右端からパリティ、可変領域、固定領域、管理データおよびユーザデータの順で配置される。

0149

図26におけるbは、第3の実施の形態における可変領域および固定領域を分散させた符号語のデータ構造の一例を示す図である。例えば、可変領域および固定領域はそれぞれ2つに分割され、符号語の右端から順に、パリティ、固定領域の一部、可変領域の一部、固定領域の残り、可変領域の残り、管理データおよびユーザデータの順で配置される。

0150

図26におけるcは、第3の実施の形態における非ユーザデータ領域の位置を変えた符号語のデータ構造の一例を示す図である。例えば、符号語の右端からパリティ、ユーザデータおよび非ユーザデータの順で配置される。

0151

図26におけるdは、第3の実施の形態におけるユーザデータを分散させた符号語のデータ構造の一例を示す図である。例えば、ユーザデータが2つに分割され、符号語の右端からパリティ、ユーザデータの一部、非ユーザデータ、ユーザデータの残りの順で配置される。

0152

図26におけるeは、第3の実施の形態におけるユーザデータおよび非ユーザデータを分散させた符号語のデータ構造の一例を示す図である。例えば、ユーザデータおよび非ユーザデータが2つに分割され、符号語の右端から順に、パリティ、ユーザデータの一部、非ユーザデータの一部、ユーザデータの残り、および、非ユーザデータの残りの順で配置される。

0153

図26におけるfは、第3の実施の形態において非ユーザデータを分散させ、さらに可変領域および固定領域を分散させた符号語のデータ構造の一例を示す図である。例えば、非ユーザデータが2つに分割され、さらに可変領域および固定領域も2つに分割される。例えば、符号語の右端からパリティ、固定領域の一部、可変領域の一部、ユーザデータ、固定領域の残り、可変領域の残り、および、管理データの順で配置される。

0154

なお、符号語のデータ構成は、図26に例示した構成に限定されない。例えば、ユーザデータなどを3つ以上に分割してもよいし、符号語の左端に可変領域を配置してもよい。

0155

図26に例示したように、選択値を格納する可変領域の位置を変えることにより、パリティにおける重みを変えることができる。例えば、図26におけるaのように、右端から18および19ビット目に選択値を配置し、それ以外の全ビットを「0」にした情報部と、ある生成多項式G(x)とから次のパリティパターンが生成されたものとする。
選択値「01」のパリティパターンP1:00000000 10110100
選択値「10」のパリティパターンP2:00000001 01101000
選択値「11」のパリティパターンP3:00000001 11011100

0156

ここで、図26におけるcのように、右端から42および43ビット目に選択値の位置を変えて、同じ生成多項式G(x)を用いると、次のパリティパターンが得られる。
選択値「01」のパリティパターンP1’:01000110 11111101
選択値「10」のパリティパターンP2’:10001101 11111010
選択値「11」のパリティパターンP3’:11001011 00000111

0157

上述のパリティパターンP1、P2およびP3と比較して、パリティパターンP1’、P2’およびP3’の方が「1」のビット数(重み)が多い。この場合には、重みの少なくなる図24におけるaの配置の方が望ましい。情報部のデータサイズ、生成多項式や、符号の種類により、最適な可変領域の位置は変わるため、可変領域の位置を幾通りかに変えてパリティを生成し、それらを比較することにより最適な位置が求められる。

0158

このように、本技術の第3の実施の形態によれば、パリティの右隣の位置などに可変領域を配置した情報部を符号化することにより、重みを低減してデータ保持特性を向上させることができる。

0159

<4.第4の実施の形態>
上述の第1の実施の形態では、候補パリティ生成部330は、パリティパターン生成部331、332および333により3つのパリティパターンを生成していた。すなわち、パリティパターンと同じ個数のパリティパターン生成部を設けていた。しかし、パリティパターンの個数が多くなるほど、パリティパターン生成部の個数が増大し、演算量や回路規模が増大するおそれがある。この第4の実施の形態の候補パリティ生成部330は、パリティパターンを生成する回路を削減した点において第1の実施の形態と異なる。

0160

図27は、第4の実施の形態における候補パリティ生成部330の一構成例を示すブロック図である。この第4の実施の形態の候補パリティ生成部330は、パリティパターン生成部333を備えない点において第1の実施の形態と異なる。

0161

また、第4の実施の形態の排他的論理和演算部336は、候補パリティC1とパリティパターンP2とに対し、対応するビットごとにXOR演算を行う点において第1の実施の形態と異なる。このXOR演算により候補パリティC3が得られる。これは、候補パリティC1を含む符号語とパリティパターンP2を含む符号語との加算は、候補パリティC3を含む符号語となるためである。なお、排他的論理和演算部336は、特許請求の範囲に記載の第4候補パリティ生成部の一例である。

0162

このように、本技術の第4の実施の形態によれば、候補パリティ生成部330は、候補パリティC1とパリティパターンP2とのXOR演算により候補パリティP3を生成するため、パリティパターンP3を生成する回路を削減することができる。

0163

<5.第5の実施の形態>
上述の第1の実施の形態では、メモリコントローラ300は、重みが最小となる候補パリティを選択パリティとして選択していた。しかし、選択パリティにより、連続して書き換えるビット数が多くなる場合には、書込みの際の消費電力が大きくなるおそれがある。このため、連続して書き換えるビット数を低減することが望ましい。この第5の実施の形態のメモリコントローラ300は、連続して書き換えるビット数を低減した点において第1の実施の形態と異なる。

0164

図28は、第5の実施の形態における選択部350の一構成例を示すブロック図である。この選択部350は、未使用データ保持部351と、排他的論理和演算部352乃至355と、最長ランカウンタ361乃至364と比較部345とを備える。未使用データ保持部351と排他的論理和演算部352乃至355との構成は、第2の実施の形態と同様である。また、第5の実施の形態の未使用データ保持部351の構成は第2の実施の形態と同様であり、第5の実施の形態の比較部345の構成は、第1の実施の形態と同様である。

0165

最長ランカウンタ361は、排他的論理和演算部352の演算結果において、ランの長さを計数して、その最大値を最長ランの長さとして求めるものである。ここで、「ラン」は、連続する特定の値(例えば、「1」)のビットの集まりを示す。また、最長ランの長さは、連続して書き換えられるビット数の最大値を示す。最長ランカウンタ361は、最長ランの長さをCNT3として比較部345に供給する。

0166

最長ランカウンタ362は、排他的論理和演算部353の演算結果において最長ランの長さを求めるものである。この最長ランカウンタ362は、求めた長さをCNT2として比較部345に供給する。

0167

最長ランカウンタ363は、排他的論理和演算部354の演算結果において最長ランの長さを求めるものである。この最長ランカウンタ363は、求めた長さをCNT1として比較部345に供給する。

0168

最長ランカウンタ364は、排他的論理和演算部355の演算結果において最長ランの長さを求めるものである。この最長ランカウンタ364は、求めた長さをCNT0として比較部345に供給する。

0169

図29は、第5の実施の形態における情報部および候補パリティの一例を示す図である。同図におけるaは、ユーザデータと選択値「00」の未使用データと候補パリティC0とからなる符号語を示す。同図におけるbは、プレリードデータの一例を示す図である。また、図29におけるcは、候補パリティC1を含む符号語を示し、同図におけるdは候補パリティC2を含む符号語を示す。また、同図におけるeは候補パリティC3を含む符号語を示す。

0170

候補パリティ生成部330は、プレリードデータ内のパリティおよび未使用データと、候補パリティおよび対応する未使用データとをビット単位で比較する。候補パリティ生成部330は、それぞれの候補パリティについて、連続して書き換えるビット数(すなわち、最長ランの長さ)を求める。

0171

図29において「*」は、書換えビットの位置を示す。また、点線で囲った部分は、最長ランを示す。例えば、候補パリティC0および未使用データ「0000」では、最長ランの長さは、10進数で「6」となる。候補パリティC1および未使用データ「0100」では、最長ランの長さが10進数で「3」となり、候補パリティC2および未使用データ「1000」では、最長ランの長さが10進数で「5」となる。候補パリティC3および未使用データ「1100」では最長ランの長さは、10進数で「3」となる。これらのうち、最長ランの長さが最小となる候補パリティC1およびC3のいずれかが選択される。

0172

一般に、不揮発性メモリ400がデータを一定の単位で書き換える場合、連続して書き換えるビット数(最長ランの長さ)が少ないほど、書込みの際の消費電力が低減し、リテンションも向上する。このため、符号化部320は、最長ランの長さが最小の候補パリティを選択することにより、不揮発性メモリ400の消費電力およびデータ保持特性を向上させることができる。

0173

図30は、第5の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。第2の実施の形態のパリティ選択処理は、ステップS922およびS923の代わりにステップS927およびS928を実行する点において第1の実施の形態と異なる。

0174

メモリコントローラ300は、候補パリティを生成し(ステップS921)、候補パリティごとに最長ランの長さを計数する(ステップS927)。メモリコントローラ300は、最長ランの長さが最小になる候補パリティを選択し(ステップS928)、ステップS924を実行する。なお、第5の実施の形態のコントローラ側ライト処理は、第2の実施の形態と同様である。

0175

このように、本技術の第5の実施の形態によれば、符号化部320は、連続して書き換えるビット数が最小になるパリティを選択するため、メモリセルへの書込みの際の不揮発性メモリ400の消費電力を低減することができる。

0176

なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。

0177

また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカードブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。

0178

なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。

0179

なお、本技術は以下のような構成もとることができる。
(1)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部と
を具備する符号化装置。
(2)前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記所定の可変領域を含む未使用データとを含む
前記(1)記載の符号化装置。
(3)前記選択部は、
前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて特定の値のビットの個数を重みとして計数する第1の重みカウンタと、
前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記特定の値のビットの個数を重みとして計数する第2の重みカウンタと、
前記第1および第2の重みカウンタのそれぞれの計数値を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
を備える前記(2)記載の符号化装置。
(4)メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、
前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビット数を書換えビット数として計数する第1の書換えビット数カウンタと、
前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データととにおいて前記プレリードデータと値の異なるビット数を書換えビット数として計数する第2の書換えビット数カウンタと、
前記第1および第2の書換えビット数カウンタのそれぞれで計数された書換えビット数を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
を備える前記(2)記載の符号化装置。
(5)メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、
前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第1の最長ランカウンタと、
前記選択部は、前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第2の最長ランカウンタと、
前記第1および第2の最長ラン数カウンタのそれぞれで求められた最長ランの長さを比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
を備える前記(2)記載の符号化装置。
(6)前記符号語において前記ユーザデータと前記選択パリティとの間に前記未使用データが配置される前記(2)から(5)のいずれかに記載の符号化装置。
(7)前記符号語において前記未使用データと前記選択パリティとの間に前記ユーザデータが配置される前記(2)から(5)のいずれかに記載の符号化装置。
(8)前記符号語において前記ユーザデータは複数の領域に分散して配置される前記(2)から(5)のいずれかに記載の符号化装置。
(9)前記符号語において前記未使用データは、複数の領域に分散して配置される前記(2)から(5)のいずれかに記載の符号化装置。
(10)前記未使用データは、前記可変領域と値が変更されない固定領域とからなり、
前記第2候補パリティ生成部は、前記可変領域の値を変更した前記情報部に対応する前記第2の候補パリティを生成する
前記(2)から(9)のいずれかに記載の符号化装置。
(11)前記符号語において前記可変領域は複数の領域に分散して配置される前記(10)記載の符号化装置。
(12)前記符号語において前記固定領域は複数の領域に分散して配置される前記(10)または(11)に記載の符号化装置。
(13)前記第1の候補パリティ生成部は、前記情報部から前記第1の候補パリティを生成し、
前記第2の候補パリティ生成部は、前記第1の候補パリティと第1のパリティパターンとの論理演算により前記第2の候補パリティを生成する前記(1)から(12)のいずれかに記載の符号化装置。
(14)第2のパリティパターンと前記第1の候補パリティとの論理演算により第3の候補パリティを生成する第3の候補パリティ生成部と、
前記第2のパリティパターンと前記第2の候補パリティとの論理演算により第4の候補パリティを生成する第4の候補パリティ生成部と
をさらに具備し、
前記選択部は、前記第1、第2、第3および第4の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する
前記(13)記載の符号化装置。
(15)ユーザデータにおける特定の値のビット数を変換する変換処理を行って当該変換処理後の前記ユーザデータと前記変換処理前の前記ユーザデータとのいずれかを前記第1の候補パリティ生成部に出力するユーザデータ変換部をさらに具備し、
前記第1の候補パリティ生成部は、前記出力されたユーザデータを含む前記第1の情報部から前記第1の候補パリティを生成する
前記(1)から(14)のいずれかに記載の符号化装置。
(16)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語をライトデータとしてメモリセルに出力する出力部と、
前記メモリセルからリードデータを読み出して前記リードデータを復号する復号部と
を具備するメモリコントローラ。
(17)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を送信語として出力する出力部と、
前記送信語に対応する受信語を受信して復号する復号部と
を具備する通信システム。
(18)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成手順と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成手順と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択手順と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力手順
を具備する符号化方法。

0180

100ホストコンピュータ
200ストレージ
300メモリコントローラ
311システムインターフェース
312 RAM
313 CPU
314ECC処理部
315 ROM
316、450バス
317メモリインターフェース
320 符号化部
321ライトバッファ
322、325 ユーザデータ変換部
323ECC符号化器
324ライトデータ出力部
330 候補パリティ生成部
331、332、333パリティパターン生成部
334、335、336、352、353、354、355排他的論理和演算部
337 パリティパターン保持部
340、350 選択部
341、342、343、344 重みカウンタ
345比較部
346、347、348加算器
351未使用データ保持部
356、357、358、359書換えビット数カウンタ
361、362、363、364 最長ランカウンタ
370復号部
371リードバッファ
372 ユーザデータ逆変換部
373ECC復号器
380、381コマンド制御部
400不揮発性メモリ
410データバッファ
420メモリセルアレイ
430ドライバ
440アドレスデコーダ
460制御インターフェース
470メモリ制御部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ