図面 (/)

技術 メモリシステムおよび制御方法

出願人 東芝メモリ株式会社
発明者 菅野伸一
出願日 2016年9月9日 (4年5ヶ月経過) 出願番号 2016-176835
公開日 2018年3月15日 (2年11ヶ月経過) 公開番号 2018-041403
状態 特許登録済
技術分野 リードオンリーメモリ エラーの検出訂正 メモリシステム
主要キーワード 数学的規則 非反転動作 所定ビット列 中間閾値 反転演算 半導体ストレージ チップマイクロコントローラ 位置セット
関連する未来課題
重要な関連分野

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

図面 (20)

課題

符号化のための付帯情報を低減することができるメモリシステムを実現する。

解決手段

実施形態によれば、メモリシステムは、第1ライトデータのための第1誤り訂正符号を生成し、前記第1ライトデータと前記第1誤り訂正符号との組、または前記第1ライトデータの各ビット反転された第2ライトデータと前記第1誤り訂正符号の各ビットが反転された第2誤り訂正符号との組のいずれかを、対象のページ場所に書き込む。前記メモリシステムは、読み出し対象のページ場所から読み出されたデータおよび誤り訂正符号を使用して、誤り訂正復号処理を実行する。誤り訂正復号処理で復号失敗が起きた場合、前記メモリシステムは、前記読み出されたデータの各ビットが反転された反転データと前記読み出された誤り訂正符号の各ビットが反転された反転誤り訂正符号とを使用して前記誤り訂正復号処理を再実行する。

概要

背景

近年、不揮発性メモリを備えるメモリシステムが広く普及している。

このようなメモリシステムの一つとして、NANDフラッシュ技術ベースソリッドステートドライブSSD)が知られている。SSDは、その低電力消費高性能という特徴により、様々なコンピューティングデバイスメインストレージとして使用されている。最近では、メモリセル摩耗を少なくするためのデータパターンを使用して、書き込むべきデータを符号化する符号化技術も開発されている。

概要

符号化のための付帯情報を低減することができるメモリシステムを実現する。実施形態によれば、メモリシステムは、第1ライトデータのための第1誤り訂正符号を生成し、前記第1ライトデータと前記第1誤り訂正符号との組、または前記第1ライトデータの各ビット反転された第2ライトデータと前記第1誤り訂正符号の各ビットが反転された第2誤り訂正符号との組のいずれかを、対象のページ場所に書き込む。前記メモリシステムは、読み出し対象のページ場所から読み出されたデータおよび誤り訂正符号を使用して、誤り訂正復号処理を実行する。誤り訂正復号処理で復号失敗が起きた場合、前記メモリシステムは、前記読み出されたデータの各ビットが反転された反転データと前記読み出された誤り訂正符号の各ビットが反転された反転誤り訂正符号とを使用して前記誤り訂正復号処理を再実行する。

目的

本発明が解決しようとする課題は、符号化のための付帯情報を低減することができるメモリシステムおよび制御方法を提供する

効果

実績

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

この技術が所属する分野

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

請求項1

不揮発性メモリと、前記不揮発性メモリに電気的に接続され、少なくとも下位ページデータ上位ページデータとを含むデータの複数のページを、前記不揮発性メモリの同一物理ページ割り当てられる少なくとも下位ページ上位ページとを含む複数のページ場所に書き込むコントローラとを具備し、前記コントローラは、1ページ分のサイズを有する第1ライトデータのための第1誤り訂正符号を生成し、前記第1ライトデータと前記第1誤り訂正符号とを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定し、前記判定の結果と、前記第1ライトデータが書き込まれるべき対象のページ場所とに基づいて、前記第1ライトデータと前記第1誤り訂正符号との組、または前記第1ライトデータの各ビットが反転された第2ライトデータと前記第1誤り訂正符号の各ビットが反転された第2誤り訂正符号との組のいずれかを前記対象のページ場所に書き込み、前記不揮発性メモリ内読み出し対象のページ場所からデータおよび誤り訂正符号を読み出し、前記読み出されたデータと前記読み出された誤り訂正符号とを使用して、前記読み出されたデータの誤り訂正のための誤り訂正復号処理を実行し、前記誤り訂正復号処理で復号失敗が起きた場合、前記読み出されたデータの各ビットが反転された反転データと前記読み出された誤り訂正符号の各ビットが反転された反転誤り訂正符号とを使用して前記誤り訂正復号処理を再実行するように構成されている、メモリシステム

請求項2

前記コントローラは、前記第1ライトデータを圧縮し、前記第1ライトデータを圧縮することによって得られる、前記第1ライトデータ内の空き領域を、全て“1”のビット列または全て“0”のビット列を含むパディングデータパディングする処理を実行し、予め決められた複数のパディング用の位置の間で、パディングデータの位置をローテーションさせ、前記圧縮された第1ライトデータと前記パディングデータとを含むデータ系列を、前記第1ライトデータとして扱うように構成されている請求項1記載のメモリシステム。

請求項3

前記コントローラは、前記圧縮された第1ライトデータに含まれる“1”のビットの数が、前記圧縮された第1ライトデータに含まれる“0”のビットの数よりも多い場合、前記全て“1”のビット列でパディングする処理を実行し、前記圧縮された第1ライトデータに含まれる“0”のビットの数が、前記圧縮された第1ライトデータに含まれる“1”のビットの数よりも多い場合、前記全て“0”のビット列でパディングする処理を実行する請求項2記載のメモリシステム。

請求項4

前記不揮発性メモリは、メモリセル当たりに2ビットのデータを格納可能に構成され、前記下位ページデータおよび前記上位ページデータを含む、データの2つのページが、前記同一物理ページに割り当てられた、前記下位ページおよび前記上位ページを含む2つのページ場所に書き込まれる請求項1記載のメモリシステム。

請求項5

前記不揮発性メモリは、メモリセル当たりに3ビットのデータを格納可能に構成され、前記下位ページデータ、中位ページデータ、および前記上位ページデータを含む、データの3つのページが、前記同一物理ページに割り当てられた、前記下位ページ、中位ページおよび前記上位ページを含む3つのページ場所に書き込まれる請求項1記載のメモリシステム。

請求項6

不揮発性メモリと、前記不揮発性メモリに電気的に接続され、少なくとも下位ページデータと上位ページデータとを含むデータの複数のページを、前記不揮発性メモリの同一物理ページに割り当てられる少なくとも下位ページと上位ページとを含む複数のページ場所に書き込むコントローラとを具備し、前記コントローラは、1ページ分のサイズを有する第1ライトデータのための第1誤り訂正符号を生成し、前記第1ライトデータに“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定し、前記判定の結果と、前記第1ライトデータが書き込まれるべき対象のページ場所とに基づいて、前記第1ライトデータと前記第1誤り訂正符号との組、または前記第1ライトデータの各ビットが反転された第2ライトデータと前記第1誤り訂正符号との組のいずれかを前記対象のページ場所に書き込み、前記不揮発性メモリ内の読み出し対象のページ場所からデータおよび誤り訂正符号を読み出し、前記読み出されたデータと前記読み出された誤り訂正符号とを使用して、前記読み出されたデータの誤り訂正のための誤り訂正復号処理を実行し、前記誤り訂正復号処理で復号失敗が起きた場合、前記読み出されたデータの各ビットが反転された反転データと前記読み出された誤り訂正符号とを使用して前記誤り訂正復号処理を再実行するように構成されている、メモリシステム。

請求項7

前記コントローラは、前記第1ライトデータを圧縮し、前記第1ライトデータを圧縮することによって得られる、前記第1ライトデータ内の空き領域を、全て“1”のビット列または全て“0”のビット列を含むパディングデータでパディングする処理を実行し、予め決められた複数のパディング用の位置の間で、パディングデータの位置をローテーションさせ、前記圧縮された第1ライトデータと前記パディングデータとを含むデータ系列を、前記第1ライトデータとして扱うように構成されている請求項6記載のメモリシステム。

請求項8

前記コントローラは、前記圧縮された第1ライトデータに含まれる“1”のビットの数が、前記圧縮された第1ライトデータに含まれる“0”のビットの数よりも多い場合、前記全て“1”のビット列でパディングする処理を実行し、前記圧縮された第1ライトデータに含まれる“0”のビットの数が、前記圧縮された第1ライトデータに含まれる“1”のビットの数よりも多い場合、前記全て“0”のビット列でパディングする処理を実行する請求項7記載のメモリシステム。

請求項9

前記不揮発性メモリは、メモリセル当たりに2ビットのデータを格納可能に構成され、前記下位ページデータおよび前記上位ページデータを含む、データの2つのページが、前記同一物理ページに割り当てられた、前記下位ページおよび前記上位ページを含む2つのページ場所に書き込まれる請求項6記載のメモリシステム。

請求項10

前記不揮発性メモリは、メモリセル当たりに3ビットのデータを格納可能に構成され、前記下位ページデータ、中位ページデータ、および前記上位ページデータを含む、データの3つのページが、前記同一物理ページに割り当てられた、前記下位ページ、中位ページおよび前記上位ページを含む3つのページ場所に書き込まれる請求項6記載のメモリシステム。

請求項11

少なくとも下位ページデータと上位ページデータとを含むデータの複数のページを、不揮発性メモリの同一物理ページに割り当てられる少なくとも下位ページと上位ページとを含む複数のページ場所に書き込む制御方法であって、1ページ分のサイズを有する第1ライトデータのための第1誤り訂正符号を生成することと、前記第1ライトデータと前記第1誤り訂正符号とを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定することと、前記判定の結果と、前記第1ライトデータが書き込まれるべき対象のページ場所とに基づいて、前記第1ライトデータと前記第1誤り訂正符号との組、または前記第1ライトデータの各ビットが反転された第2ライトデータと前記第1誤り訂正符号の各ビットが反転された第2誤り訂正符号との組のいずれかを前記対象のページ場所に書き込むことと、前記不揮発性メモリ内の読み出し対象のページ場所からデータおよび誤り訂正符号を読み出し、前記読み出されたデータと前記読み出された誤り訂正符号とを使用して、前記読み出されたデータの誤り訂正のための誤り訂正復号処理を実行することと、前記誤り訂正復号処理で復号失敗が起きた場合、前記読み出されたデータの各ビットが反転された反転データと前記読み出された誤り訂正符号の各ビットが反転された反転誤り訂正符号とを使用して前記誤り訂正復号処理を再実行することとを具備する制御方法。

請求項12

前記第1ライトデータを圧縮することと、前記第1ライトデータを圧縮することによって得られる、前記第1ライトデータ内の空き領域を、全て“1”のビット列または全て“0”のビット列を含むパディングデータでパディングする処理を実行することと、前記パディングデータの位置が複数の異なるパディング用の位置の間でローテーションされるように前記パディングデータの位置を調整することと、前記圧縮された第1ライトデータと前記パディングデータとを含むデータ系列を、前記第1ライトデータとして扱うこととをさらに具備する請求項11記載の制御方法。

請求項13

少なくとも下位ページデータと上位ページデータとを含むデータの複数のページを、不揮発性メモリの同一物理ページに割り当てられる少なくとも下位ページと上位ページとを含む複数のページ場所に書き込む制御方法であって、1ページ分のサイズを有する第1ライトデータのための第1誤り訂正符号を生成することと、前記第1ライトデータに“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定することと、前記判定の結果と、前記第1ライトデータが書き込まれるべき対象のページ場所とに基づいて、前記第1ライトデータと前記第1誤り訂正符号との組、または前記第1ライトデータの各ビットが反転された第2ライトデータと前記第1誤り訂正符号との組のいずれかを前記対象のページ場所に書き込むことと、前記不揮発性メモリ内の読み出し対象のページ場所からデータおよび誤り訂正符号を読み出し、前記読み出されたデータと前記読み出された誤り訂正符号とを使用して、前記読み出されたデータの誤り訂正のための誤り訂正復号処理を実行することと、前記誤り訂正復号処理で復号失敗が起きた場合、前記読み出されたデータの各ビットが反転された反転データと前記読み出された誤り訂正符号とを使用して前記誤り訂正復号処理を再実行することとを具備する制御方法。

請求項14

前記第1ライトデータを圧縮することと、前記第1ライトデータを圧縮することによって得られる、前記第1ライトデータ内の空き領域を、全て“1”のビット列または全て“0”のビット列を含むパディングデータでパディングする処理を実行することと、前記パディングデータの位置が複数の異なるパディング用の位置の間でローテーションされるように前記パディングデータの位置を調整することと、前記圧縮された第1ライトデータと前記パディングデータとを含むデータ系列を、前記第1ライトデータとして扱うこととをさらに具備する請求項13記載の制御方法。

技術分野

0001

本発明の実施形態は、不揮発性メモリを制御する技術に関する。

背景技術

0002

近年、不揮発性メモリを備えるメモリシステムが広く普及している。

0003

このようなメモリシステムの一つとして、NANDフラッシュ技術ベースソリッドステートドライブSSD)が知られている。SSDは、その低電力消費高性能という特徴により、様々なコンピューティングデバイスメインストレージとして使用されている。最近では、メモリセル摩耗を少なくするためのデータパターンを使用して、書き込むべきデータを符号化する符号化技術も開発されている。

先行技術

0004

特許第4358299号公報

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

0005

しかし、一般に、このような符号化技術を適用したケースにおいては、符号化されたデータを構成する複数のデータ部それぞれに対してその符号化の内容を示す情報を付帯情報として付加することが必要とされる。この付帯情報の量が増加されるほど、不揮発性メモリの各ページに書き込むことが可能なユーザデータの量が減少される。

0006

本発明が解決しようとする課題は、符号化のための付帯情報を低減することができるメモリシステムおよび制御方法を提供することである。

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

0007

実施形態によれば、メモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続され、少なくとも下位ページデータ上位ページデータとを含むデータの複数のページを、前記不揮発性メモリの同一物理ページ割り当てられる少なくとも下位ページ上位ページとを含む複数のページ場所に書き込むコントローラとを具備する。前記コントローラは、1ページ分のサイズを有する第1ライトデータのための第1誤り訂正符号を生成する。前記コントローラは、前記第1ライトデータと前記第1誤り訂正符号とを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定する。前記コントローラは、前記判定の結果と、前記第1ライトデータが書き込まれるべき対象のページ場所とに基づいて、前記第1ライトデータと前記第1誤り訂正符号との組、または前記第1ライトデータの各ビットが反転された第2ライトデータと前記第1誤り訂正符号の各ビットが反転された第2誤り訂正符号との組のいずれかを前記対象のページ場所に書き込む。前記コントローラは、前記不揮発性メモリ内読み出し対象のページ場所からデータおよび誤り訂正符号を読み出し、前記読み出されたデータと前記読み出された誤り訂正符号とを使用して、前記読み出されたデータの誤り訂正のための誤り訂正復号処理を実行する。前記コントローラは、前記誤り訂正復号処理で復号失敗が起きた場合、前記読み出されたデータの各ビットが反転された反転データと前記読み出された誤り訂正符号の各ビットが反転された反転誤り訂正符号とを使用して前記誤り訂正復号処理を再実行する。

図面の簡単な説明

0008

実施形態に係るメモリシステムの構成例を示すブロック図。
同実施形態のメモリシステムに設けられる不揮発性メモリ内のメモリセルアレイの構成例を示す図。
各メモリセルが2ビットデータを格納する、マルチレベルセルMLCフラッシュメモリ内のメモリセルアレイの閾値電圧分布を示す図。
各メモリセルが3ビットデータを格納する、トリプルレベルセルTLC)フラッシュメモリ内のメモリセルアレイの閾値電圧分布を示す図。
MLCフラッシュメモリの4つの閾値電圧分布に対する下位ページビットの“1”/“0”の割り当てと、この4つの閾値電圧分布に対する上位ページビットの“1”/“0”の割り当てと、TLC−フラッシュメモリの8つの閾値電圧分布に対する下位ページビットの“1”/“0”の割り当てと、この8つの閾値電圧分布に対する中位ページビットの“1”/“0”の割り当てと、この8つの閾値電圧分布に対する上位ページビットの“1”/“0”の割り当てとを示す図。
同実施形態のメモリシステムに設けられるエンコーダの構成例を示すブロック図。
MLCフラッシュメモリの下位ページに書き込まれるべきライトデータとこのライトデータのためのECCとを符号化する動作を示す図。
MLCフラッシュメモリの上位ページに書き込まれるべきライトデータとこのライトデータのためのECCとを符号化する動作を示す図。
MLCフラッシュメモリの下位ページに書き込まれるべきライトデータを符号化し、符号化されたライトデータをオリジナルのライトデータのためのECCと一緒に書き込む動作を示す図。
MLCフラッシュメモリの上位ページに書き込まれるべきライトデータを符号化し、符号化されたライトデータをオリジナルのライトデータのためのECCと一緒に書き込む動作を示す図。
同実施形態のメモリシステムに設けられるデコーダの構成例を示すブロック図。
MLCフラッシュメモリにおいて、エンデュランスコードエンコーディングの適用前における閾値電圧分布“Er”および閾値電圧分布“C”それぞれの出現確率と、エンデュランスコード今コーディングの適用後における閾値電圧分布“Er”および閾値電圧分布“C”それぞれの出現確率とを示す図。
TLCフラッシュメモリにおいて、エンデュランスコードエンコーディングの適用前における閾値電圧分布“Er”および閾値電圧分布“G”それぞれの出現確率と、エンデュランスコードエンコーディングの適用後における閾値電圧分布“Er”および閾値電圧分布“G”それぞれの出現確率とを示す図。
同実施形態のメモリシステムに設けられるエンコーダの別の構成例を示すブロック図。
同実施形態のメモリシステムによって実行されるパディングおよび回転の動作を示す図。
同実施形態のメモリシステムによって実行される別のパディングおよび回転の動作を示す図。
図14のエンコーダに適用される符号化動作を示す図。
図14のエンコーダに適用される別の符号化動作を示す図。
図14のエンコーダによって生成される符号化データのフォーマットの例を示す図。
図14のエンコーダによって生成される符号化データのフォーマットの別の例を示す図。
図14のエンコーダに適用されるさらに別の符号化動作を示す図。
同実施形態のメモリシステムによって実行されるライト動作の手順を示すフローチャート
同実施形態のメモリシステムによって実行されるリード動作の手順を示すフローチャート。
同実施形態のメモリシステムによって実行されるライト動作の別の手順を示すフローチャート。
同実施形態のメモリシステムによって実行されるリード動作の別の手順を示すフローチャート。
同実施形態のメモリシステムによって実行されるライト動作のさらに別の手順を示すフローチャート。
同実施形態のメモリシステムによって実行されるライト動作のさらに別の手順を示すフローチャート。
同実施形態のメモリシステムによって実行されるリード動作のさらに別の手順を示すフローチャート。
同実施形態のメモリシステムによって実行されるライト動作のさらに別の手順を示すフローチャート。
ホストの構成例を示すブロック図。
同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示す図。

実施例

0009

以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。

0010

このメモリシステムは、不揮発性メモリにデータをライトし、不揮発性メモリからデータをリードするように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。

0011

情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、サーバパーソナルコンピュータのような情報処理装置である。

0012

SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。

0013

ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCIExpress(PCIe)、Ethernet(登録商標),Fibre channel等を使用し得る。

0014

SSD3は、コントローラ4および不揮発性メモリ(NANDフラッシュメモリ)5を備える。SSD3は、DRAM6も備えていてもよい。NANDフラッシュメモリ5は、限定されないが、複数のNANDフラッシュメモリチップを含んでいてもよい。NANDフラッシュメモリ5は、メモリセル当たりに2ビット以上のデータを格納可能に構成されている。例えば、NANDフラッシュメモリ5は、マルチレベルセル(MLC)フラッシュメモリであってもよいし、トリプルレベルセル(TLC)フラッシュメモリであってもよい。

0015

NANDフラッシュメモリ5は、メモリセルアレイを含む。このメモリセルアレイは、多数のNANDブロック(ブロック)B0〜Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「物理ブロック」または「消去ブロック」と称されることもある。

0016

ブロックB0〜Bm−1は多数のページ(物理ページ)を含む。つまり、ブロックB0〜Bm−1の各々は、ページP0〜Pn−1を含む。NANDフラッシュメモリ5においては、データのリードおよびデータのライトはページ単位で実行される。データの消去ブロック単位で実行される。

0017

コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNANDフラッシュメモリ5に電気的に接続されている。コントローラ4は、NANDフラッシュメモリ5のデータ管理とNANDフラッシュメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。

0018

データ管理には、(1)論理ブロックアドレス(LBA)と物理アドレスとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。LBAと物理アドレスとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するルックアップテーブル(LUT)32を用いて実行される。ルックアップテーブル(LUT)32は、所定の管理サイズ単位で、LBAと物理アドレスとの間のマッピングを管理する。ホスト2からのライトコマンドの多くは、4Kバイトのデータの書き込みを要求する。したがって、ルックアップテーブル(LUT)32は、例えば4Kバイト単位で、LBAと物理アドレスとの間のマッピングを管理してもよい。あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNANDフラッシュメモリ5内の物理記憶位置を示す。物理アドレスは、物理ブロックアドレス物理ページアドレスとを含む。物理ページアドレスは全てのページに割り当てられており、また物理ブロックアドレスは全てのブロックに割り当てられている。

0019

ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。このため、コントローラ4は、同じLBAへのライト(上書き)を、NANDフラッシュメモリ5上の異なるページにマッピングする。つまり、コントローラ4は、ホスト2から受信されるライトコマンドによって指定されるデータ(ライトデータ)を、このデータのLBAとは無関係に、書き込み先ブロックとして現在割り当てられているブロック内の次の利用可能ページにライトする。そして、コントローラ4は、ルックアップテーブル(LUT)32を更新して、このLBAを、このデータが実際にライトされたこのページの物理アドレスに関連付ける。書き込み先ブロックに利用可能ページが無くなると、新たなブロックが書き込み先ブロックとして割り当てられる。

0020

ブロック管理には、不良ブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。

0021

ホスト2は、リードコマンドおよびライトコマンドをSSD3に送出する。リードコマンドは、SSD3に対してデータのリードを要求するコマンドである。リードコマンドは、リードすべきデータのLBA(開始LBA)と、リードすべきデータの転送長とを含む。ライトコマンドは、SSD3に対してデータのライトを要求するコマンドである。ライトコマンドは、ライトデータ(つまり書き込むべきデータ)のLBA(開始LBA)と、ライトデータの転送長とを含む。

0022

次に、コントローラ4の構成について説明する。

0023

コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14、誤り訂正符号(ECC)エンコーダ/デコーダ15等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14、ECCエンコーダ/デコーダ15は、バス10を介して相互接続される。

0024

ホストインタフェース11は、ホスト2から様々なコマンド(ライトコマンド、リードコマンド、イレーズコマンドアンマップ(UNMAP)コマンド、等)を受信する。

0025

CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14、ECCエンコーダ/デコーダ15を制御するように構成されたプロセッサである。CPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。

0026

例えば、コントローラ4がホスト2からライトコマンドを受信した時、CPU12の制御の下、コントローラ4は、ライトコマンドによって指定されるライトデータをNANDフラッシュメモリ5に書き込む以下のライト動作を実行する。

0027

コントローラ4は、ライトデータを現在の書き込み先ブロックの物理記憶位置(利用可能ページ)に書き込み、そしてルックアップテーブル(LUT)32を更新して、ライトコマンドに含まれるLBA(開始LBA)にこの物理記憶位置の物理アドレスをマッピングする。

0028

これらFTL処理およびコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、ライト動作制御部21、リード動作制御部22、およびエンデュランスコードエンコーダ/デコーダ23として機能させる。

0029

ライト動作制御部21は、ホスト2から受信されるライトデータをライトバッファ(WB)31に格納する。そして、ライト動作制御部21は、ライトバッファ(WB)31内のデータをページ単位でNANDフラッシュメモリ5に書き込む。この場合、ライト動作制御部21は、NANDインタフェース13と共同して、データの複数ページをNANDフラッシュメモリ5の同一物理ページに割り当てられた複数のページ場所に書き込み、これによってメモリセル当たりに2ビット以上のデータを書き込む。物理ページとは、同一ワード線に接続されたメモリセル群を意味する。

0030

データの複数ページは、少なくとも下位ページデータおよび上位ページデータを含む。1つの物理ページに割り当てられる複数のページ場所は、少なくとも下位ページおよび上位ページを含む。

0031

あるいは、データの複数ページは、下位ページデータと、一つ以上の中位ページデータと、上位ページデータとを含んでもよく、複数のページ場所もまた、下位ページと、一つ以上の中位ページと、上位ページとを含んでもよい。

0032

NANDフラッシュメモリ5がメモリセル当たりに2ビットのデータを格納可能なマルチレベルセル(MLC)フラッシュメモリとして実現されている場合においては、一つの物理ページ(同一ワード線に接続されたメモリセル群)には2つのページ場所、つまり下位ページおよび上位ページが割り当てられる。一つの物理ページを構成するメモリセル群の各々に2ビットのデータを書き込む(プログラム)ために、データの2つのページ、つまり下位ページデータおよび上位ページデータが、この物理ページの下位ページおよび上位ページに書き込まれる。

0033

NANDフラッシュメモリ5がメモリセル当たりに3ビットのデータを格納可能なトリプルレベルセル(TLC)フラッシュメモリとして実現されている場合においては、一つの物理ページ(同一ワード線に接続されたメモリセル群)には3つのページ場所、つまり下位ページ、中位ページおよび上位ページが割り当てられる。一つの物理ページを構成するメモリセル群の各々に3ビットのデータを書き込む(プログラム)ために、データの3つのページ、つまり下位ページデータ、中位ページおよび上位ページデータが、この物理ページの下位ページ、中位ページおよび上位ページに書き込まれる。

0034

一つの物理ページ(同一ワード線に接続されたメモリセル群)に割り当てられるページ場所の数は4以上であってもよい。この場合、下位ページと、2つ以上の中位ページと、上位ページとが一つの物理ページに割り当てられる。

0035

リード動作制御部22は、NANDインタフェース13と共同して、ホスト2からのリード要求によって指定されたNANDフラッシュメモリ5内のページ(ページ場所)からデータを読み出す。

0036

エンデュランスコードエンコーダ/デコーダ23は、NANDフラッシュメモリ5の耐久性(エンデュランス)およびデータの信頼性を改善するための符号化/復号処理を実行する。符号化処理(エンデュランスコードエンコーディング)においては、書き込むべきページデータ、つまり1ページ分のサイズを有するライトデータは、メモリセルの摩耗を少なくし且つビットエラーレートを低減可能なコード(エンデュランスコードとも称される)を使用して符号化される。

0037

本実施形態では、符号化データに含まれる付帯情報(冗長情報)の量をできるだけ減らすことができ且つ十分に速い書き込み速度が得られるように改善された符号化処理が実行される。

0038

すなわち、データライト動作においては、まず、1ページ分のサイズを有するライトデータ(MLCにおいては、下位ページデータまたは上位ページデータ、TLCにおいては、下位ページデータ、中位ページデータ、または上位ページデータ)のための誤り訂正符号(ECC)がECCエンコーダ/デコーダ15によって生成される。そして、ライトデータ(書き込むべきページデータ)とECCとを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかがエンデュランスコードエンコーダ/デコーダ23によって判定される。この判定結果と、ライトデータが書き込まれるべき対象のページ場所とに基づいて、符号化データ(ライトデータとECCとの組、またはライトデータの各ビットが反転された反転ライトデータとECCの各ビットが反転された反転ECCとの組)がエンデュランスコードエンコーダ/デコーダ23によって生成され、この符号化データが対象のページ場所に書き込まれる。例えば、MLCにおいて、もしライトデータが下位ページに書き込まれるべき下位ページデータである場合においては、符号化データに含まれる“1”のビットの数が増えるようにライトデータが符号化され、これによって符号化データ(ライトデータとECCとの組、またはライトデータの各ビットが反転された反転ライトデータとECCの各ビットが反転された反転ECCとの組)が生成されてもよい。一方、ライトデータが上位ページに書き込まれるべき上位ページデータである場合においては、符号化データに含まれる“0”のビットの数が増えるように、ライトデータが符号化され、符号化データ(ライトデータとECCとの組、またはライトデータの各ビットが反転された反転ライトデータとECCの各ビットが反転された反転ECCとの組)が生成されてもよい。

0039

データリード動作においては、読み出し対象のページ場所からデータおよびECCが読み出される。そして、読み出されたデータと読み出されたECCとを使用して、読み出されたデータの誤り訂正のための誤り訂正復号処理(ECCデコード処理)がECCエンコーダ/デコーダ15によって実行される。

0040

もしECCデコード処理で復号失敗が起きたならば、エンデュランスコードエンコーダ/デコーダ23は、この読み出されたデータおよびECCがオリジナルライトデータの反転データおよびオリジナルECCの反転ECCであると解釈する。なぜなら、反転データおよび反転ECCが書き込まれているにもかかわらず、読み出されたECCそのものと読み出されたデータそのものとを使用してECCデコード処理が実行されたならば、ECCデコード処理を正しく実行できないので、ECCの誤り訂正能力を超える数のエラーがECCデコード処理によって検出され、これによって復号失敗(「復号エラー」とも云う)が起きるからである。ECCデコード処理で復号失敗が起きたならば、エンデュランスコードエンコーダ/デコーダ23は、読み出されたデータの各ビットが反転された反転データと読み出されたECCの各ビットが反転された反転誤り訂正符号とを生成し、そして反転データと反転誤り訂正符号とを使用してECCデコード処理が再実行されるようにECCエンコーダ/デコーダ15を制御する。

0041

このように、本実施形態では、1ページ分のサイズを有するライトデータ(ページデータ)とこのライトデータのためのECCとを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。そして、この判定結果と、ライトデータが書き込まれるべき対象ページ場所とに基づいて、ライトデータとECCとの組、またはライトデータの各ビットが反転された反転データとECCの各ビットが反転された反転ECCとの組のいずれかが対象のページ場所に書き込まれる。したがって、ライトデータとECCの双方を、メモリセルの摩耗を少なくし且つビットエラーレートを低減可能なコードを使用して符号化できる。そして、NANDフラッシュメモリ5から読み出された符号化データが反転されるべきであるか否かが、ECCデコード処理の結果を使用して判定される。したがって、本実施形態では、ライトデータおよびECCを含むデータ系列の反転/非反転を示す独立したビット(付帯情報)を符号化データに付加する必要は無い。

0042

一般に、ページに書き込まれるECCのサイズは、このページに書き込まれるライトデータのサイズよりも遙かに小さい。このため、ライトデータとECCの双方を反転/非反転することによって符号化データを生成する代わりに、ライトデータのみを反転/非反転することによって符号化データを生成し、この符号化データを、オリジナルのライトデータのためECCと一緒に対象のページ場所に書き込んでもよい。

0043

この場合、データライト動作においては、まず、1ページ分のサイズを有するライトデータのためのECCがECCエンコーダ/デコーダ15によって生成される。そして、ライトデータに“0”のビットまたは“1”のビットのどちらが多く含まれるかがエンデュランスコードエンコーダ/デコーダ23によって判定される。この判定結果と、ライトデータが書き込まれるべき対象のページ場所とに基づいて、符号化データ(ライトデータ、またはライトデータの各ビットが反転された反転ライトデータ)がエンデュランスコードエンコーダ/デコーダ23によって生成され、この符号化データと、オリジナルのライトデータのためのECCとが、対象のページ場所に書き込まれる。

0044

データリード動作においては、読み出し対象のページ場所からデータおよびECCが読み出される。そして、読み出されたデータと読み出されたECCとを使用して、読み出されたデータの誤り訂正のための誤り訂正復号処理(ECCデコード処理)がECCエンコーダ/デコーダ15によって実行される。

0045

もしECCデコード処理で復号失敗が起きたならば、エンデュランスコードエンコーダ/デコーダ23は、この読み出されたデータがオリジナルライトデータの反転データであると解釈する。なぜなら、反転データが書き込まれているにもかかわらず、読み出されたECCそのものと読み出されたデータそのものとを使用してECCデコード処理が実行されたならば、ECCデコード処理を正しく実行できないので、ECCの誤り訂正能力を超える数のエラーがECCデコード処理によって検出され、これによって復号失敗(「復号エラー」とも云う)が起きるからである。そして、エンデュランスコードエンコーダ/デコーダ23は、読み出されたデータの各ビットが反転された反転データと読み出されたECCとを使用して、ECCデコード処理を再実行する。これにより、読み出されたデータに対するECCデコード処理を正しく実行することができ、ECCデコード処理によって復号されたデータをホスト2に返すことができる。

0046

次に、コントローラ4内の他のコンポーネントについて説明する。

0047

NANDインタフェース13は、CPU12の制御の下、NANDフラッシュメモリ5を制御するように構成されたNANDコントローラである。上述のECCエンコーダ/デコーダ15はNANDインタフェース13に内蔵されていてもよい。

0048

DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。

0049

DRAM6の記憶領域の一部は、NANDフラッシュメモリ5にライトすべきデータを一時的に格納するためのライトバッファ(WB)31として利用されてもよい。また、DRAM6の記憶領域は、上述のルックアップテーブル(LUT)32の格納のために用いられてもよい。

0050

次に、ホスト2の構成について説明する。

0051

ホスト2は、様々なプログラムを実行する情報処理装置である。情報処理装置によって実行されるプログラムには、アプリケーションソフトウェアレイヤ41、オペレーティングシステム(OS)42、ファイルシステム43が含まれる。

0052

一般に知られているように、オペレーティングシステム(OS)42は、ホスト2を管理し、ホスト2内のハードウェアを制御し、アプリケーションがハードウェアおよびSSD3を使用することを可能にするための制御を実行するように構成されたソフトウェアである。ファイルシステム43は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。

0053

様々なアプリケーションソフトウェアスレッドがアプリケーションソフトウェアレイヤ41上で走る。アプリケーションソフトウェアスレッドの例としては、クライアントソフトウェアデータベースソフトウェア仮想マシン等がある。

0054

アプリケーションソフトウェアレイヤ41がリード要求またはライト要求のようなリクエストをSSD3に送出することが必要な時、アプリケーションソフトウェアレイヤ41は、OS42にそのリクエストを送出する。OS42はそのリクエストをファイルシステム43に送出する。ファイルシステム43は、そのリクエストを、コマンド(リードコマンド、ライトコマンド等)にトランスレートする。ファイルシステム43は、コマンドを、SSD3に送出する。SSD3からのレスポンスが受信された際、ファイルシステム43は、そのレスポンスをOS42に送出する。OS42は、そのレスポンスをアプリケーションソフトウェアレイヤ41に送出する。

0055

図2は、NANDフラッシュメモリ5内のメモリセルアレイの構成例を示す。

0056

メモリセルアレイは、複数の物理ブロック36を含む。各物理ブロック36は、複数のNANDストリングを含む。各NANDストリングは、メモリストリング34と、メモリストリング34の両端に接続された選択ゲートS1およびS2とを含む。メモリストリング34は、直列接続された複数のメモリセル33を含む。

0057

各メモリセル33はメモリセルトランジスタから構成される。メモリセルトランジスタは、半導体基板上に形成された積層ゲート構造(stacked gate structure)を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、浮遊ゲート電極、及び制御ゲート電極を含んでいる。メモリセルトランジスタの閾値電圧は、浮遊ゲート電極に蓄積される電荷の量に応じて変化される。ある特定値のデータが格納されたメモリセルトランジスタは、この特定値のデータに対応する閾値電圧を有する。

0058

選択ゲートS1はビット線BL31に接続され、選択ゲートS2はソース線SRCに接続される。同じ行に配置されたメモリセル群33の制御ゲートは、同じワード線WLに共通に接続される。選択ゲート群S1のゲート選択線GDに共通に接続され、選択ゲート群S2のゲートは選択線SGSに共通に接続される。

0059

メモリセルアレイは、一つ又は複数のプレーン37を含む。プレーン37は、複数の物理ブロック36を含む。これら物理ブロック36の各々は、複数のNANDストリングを含む。データは物理ブロック36の単位で消去される。

0060

一つのワード線WLに接続された複数のメモリセル33は、一つの物理ページ35を形成する。データのライトおよびリードは、物理ページ35の単位で実行される。メモリセル当たりに2ビットのデータを格納するMLCフラッシュメモリにおいては、一つの物理ページ35は2つのページ(下位ページ、上位ページ)に相当し、これら2つのページ(下位ページ、上位ページ)にそれぞれページアドレスが割り当てられる。メモリセル当たりに3ビットのデータを格納するTLCフラッシュメモリにおいては、物理ページ35は3つのページ(下位ページ、中位ページ、上位ページ)に相当し、これら3つのページ(下位ページ、中位ページ、上位ページ)にそれぞれページアドレスが割り当てられる。

0061

図3は、MLCフラッシュメモリ内のメモリセルアレイの閾値電圧分布を示す。

0062

各メモリセルは、2ビット符号(“11”、“01”、“00”、“10”)に対応する4つの閾値電圧分布(“Er”、“A”、“B”、“C”)のいずれかに設定される。閾値電圧分布“Er”は、消去状態に対応する閾値電圧分布である。閾値電圧分布“A”、“B”、“C”は、データが書き込まれた(プログラムされた)状態に対応する閾値電圧分布である。閾値電圧分布“Er”の閾値電圧レベルが最も低く、閾値電圧分布“C”の閾値電圧レベルが最も高い。

0063

ある物理ページへのデータライト動作においては、最初に、下位ページデータがこの物理ページの下位ページに書き込まれる。これにより、この物理ページ内の各メモリセルは、対応する下位ページビットの値に基づいて、閾値電圧分布“Er”または閾値電圧分布“B”のいずれかに、あるいは、閾値電圧分布“Er”または所定の中間閾値電圧分布のいずれかに設定される。この後、上位ページデータがこの物理ページの上位ページに書き込まれる。これにより、物理ページ内の各メモリセルは、対応する下位ページビットの値と対応する上位ページビットの値とに基づいて、閾値電圧分布“Er”、“A”、“B”、“C”のいずれかに設定される。

0064

データリード動作において、ある物理ページの下位ページを指定するページアドレスが入力された場合には、この下位ページに書き込まれている下位ページデータが読み出される。あるこの物理ページの上位ページを指定するページアドレスが入力された場合には、この上位ページに書き込まれている上位ページデータが読み出される。

0065

図4は、TLCフラッシュメモリ内のメモリセルアレイの閾値電圧分布を示す。

0066

各メモリセルは、3ビット符号(“111”、“101”、“001”、“000”、“100”、“110”、“010”、“011”)に対応する8つの閾値電圧分布(“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”)のいずれかに設定される。

0067

ある物理ページへのデータライト動作においては、下位ページデータの書き込み、中位ページデータの書き込み、上位ページデータの書き込みが、実行される。

0068

データリード動作において、ある物理ページの下位ページを指定するページアドレスが入力された場合には、この下位ページに書き込まれている下位ページデータが読み出される。あるこの物理ページの中位ページを指定するページアドレスが入力された場合には、この中位ページに書き込まれている中位ページデータが読み出される。ある物理ページの上位ページを指定するページアドレスが入力された場合には、この上位ページに書き込まれている上位ページデータが読み出される。

0069

図5は、MLCフラッシュメモリの4つの閾値電圧分布に対する下位ページビットの“1”/“0”のマッピングと、この4つの閾値電圧分布に対する上位ページビットの“1”/“0”のマッピングと、TLCフラッシュメモリの8つの閾値電圧分布に対する下位ページビットの“1”/“0”のマッピングと、この8つの閾値電圧分布に対する中位ページビットの“1”/“0”のマッピングと、この8つの閾値電圧分布に対する上位ページビットの“1”/“0”のマッピングとを示す。

0070

MLCフラッシュメモリ、TLCフラッシュメモリのどちらにおいても、消去状態の閾値電圧分布“Er”にはオール“1”の符号が割り当てられる。個々のページ場所(MLCフラッシュメモリにおいては下位ページ/上位ページ、TLCフラッシュメモリにおいては下位ページ/中位ページ/上位ページ)に着目すると、“1”、“0”の各々が少なくとも2つ以上連続するように“1”/“0”が4つまたは8つの閾値電圧分布にマッピングされてもよい。

0071

フラッシュメモリにおいては、メモリセルに蓄えられる電荷量が多いデータ状態(高い閾値電圧レベル)は、メモリセルに蓄えられる電荷量が少ないデータ状態(低い閾値電圧レベル)よりもメモリセルを劣化させる。また、フラッシュメモリにおいては、メモリセルに蓄えられる電荷量が時間の経過に伴って減少することによって、メモリセルの閾値電圧レベルが時間の経過に伴って低下するという、データリテンション(DR)エラーが発生する場合がある。プログラムされたメモリセルの閾値電圧レベルが高い程、データリテンションエラーが発生しやすい。このため、MLCフラッシュメモリにおいては、閾値電圧分布“C”のメモリセルは、データリテンションエラーが発生しやすい。

0072

また、フラッシュメモリにおいては、データ読み出し動作に起因してメモリセル(特に、非選択メモリセル)の閾値電圧レベルが上昇するという、リードディスターブ(RD)エラーが発生する場合がある。閾値電圧分布“Er”のメモリセルは、リードディスターブエラーが発生しやすい。

0073

このため、MLCフラッシュメモリにおいて、メモリセルの摩耗を減らし且つビットエラーレートを低減するためには、両端の符号(“Er”に対応する2ビット符号、および“C”に対応する2ビット符号)の出現確率を減らし、これによって中間の符号(“B”に対応する2ビット符号、および“A”に対応する2ビット符号)の出現確率を増やすことが好ましい。

0074

MLCフラッシュメモリにおいては、4つの閾値電圧分布“Er”、“A”、“B”、“C”に割り当てられる下位ページビットの値は、例えば、“1”、“1”、“0”、“0”である。4つの閾値電圧分布“Er”、“A”、“B”、“C”に割り当てられる上位ページビットの値は、例えば、“1”、“0”、“0”、“1”である。

0075

本実施形態では、“C”に対応する2ビット符号の出現確率と“Er”に対応する2ビット符号の出現確率とを減少させるために、ライトデータが下位ページデータである場合には、“1”の数を増やすエンコーディングを使用してライトデータ(例えば、ライトデータとECCの双方、またはライトデータのみ)が符号化され、ライトデータが上位ページデータである場合には、“0”の数を増やすエンコーディングを使用してライトデータ(例えば、ライトデータとECCの双方、またはライトデータのみ)が符号化される。換言すれば、MLCフラッシュメモリにおいては、下位ページデータの“1”の数を増やし且つ上位ページデータの“0”の数を増やすためのエンコーディング規則が用いられ得る。

0076

TLCフラッシュメモリにおいては、8つの閾値電圧分布“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”に割り当てられる下位ページビットの値は、例えば、“1”、“1”、“1”、“0”、“0”、“0”、“0”、“1”である。8つの閾値電圧分布“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”に割り当てられる中位ページビットの値は、例えば、“1”、“0”、“0”、“0”、“0”、“1”、“1”、“1”である。8つの閾値電圧分布“Er”、“A”、“B”、“C”、“D”、“E”、“F”、“G”に割り当てられる上位ページビットの値は、例えば、“1”、“1”、“0”、“0”、“1”、“1”、“0”、“0”である。

0077

本実施形態では、“G”に対応する3ビット符号の出現確率と“Er”に対応する3ビット符号の出現確率とを減少させるために、TLCフラッシュメモリ用の2種類のエンコード方法(エンコード方法#1、エンコード方法#2)のいずれかが実行される。

0078

エンコード方法#1においては、ライトデータが下位ページデータである場合には、“0”の数を増やすエンコーディングを使用してライトデータ(例えば、ライトデータとECCの双方、またはライトデータのみ)が符号化され、ライトデータが中位ページデータである場合には、“0”の数を増やすエンコーディングを使用してライトデータ(例えば、ライトデータとECCの双方、またはライトデータのみ)が符号化され、ライトデータが上位ページデータである場合には、“1”の数を増やすエンコーディングを使用してライトデータ(例えば、ライトデータとECCの双方、またはライトデータのみ)が符号化される。換言すれば、TLCフラッシュメモリ用のエンコード方法#1では、下位ページデータの“0”の数を増やし、中位ページデータの“0”の数を増やし且つ上位ページデータの“1”の数を増やすためのエンコーディング規則が用いられ得る。

0079

エンコード方法#2は、下位ページデータの“1”の数を増やすエンコーディングが使用される点を除いて、エンコード方法#1と同様である。換言すれば、TLCフラッシュメモリ用のエンコード方法#2では、下位ページデータの“1”の数を増やし、中位ページデータの“0”の数を増やし且つ上位ページデータの“1”の数を増やすためのエンコーディング規則が用いられ得る。

0080

図6は、エンデュランスコードエンコーダ/デコーダ23内のエンデュランスコードエンコーダの構成例を示す。

0081

エンデュランスコードエンコーダは、ポピュレーション演算部23Aと反転/非反転演算部23Bとを含む。ポピュレーション演算部23Aは、1ページ分のサイズを有するライトデータとこのライトデータのためのECCとを含むデータ系列に含まれる“1”のポピュレーション(“1”のビットの数)をカウントする演算を行い、これによってこのデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定する。あるいは、ポピュレーション演算部23Aは、このデータ系列に含まれる“0”のポピュレーション(“0”のビットの数)をカウントするように構成されていてもよい。

0082

反転/非反転演算部23Bは、このデータ系列(ライトデータおよびECC)の各ビットを反転または非反転することによって、ライトデータとECCとの組、またはライトデータの各ビットが反転された反転ライトデータとECCの各ビットが反転された反転ECCとの組、のいずれかを符号化データとして出力する。

0083

このデータ系列の反転または非反転の動作は、ポピュレーション演算部23Aの演算結果(つまり、“0”のビットまたは“1”のビットのどちらが多く含まれるかを示す判定結果)と、ライトデータが書き込まれるべき対象のページ場所(MLCフラッシュメモリにおいては下位ページ/上位ページ、TLCフラッシュメモリにおいては下位ページ/中位ページ/上位ページ)とに基づいて、制御される。

0084

データライト動作においては、ライトデータは、まず、ECCエンコーダ15Aに送出される。ECCエンコーダ15Aは、BCH符号リードソロモン符号LDPC符号のようなECCエンコーディングを使用してライトデータをエンコードし、これによってライトデータのためのECCを生成する。このECCは、ライトデータ内の誤りを検出および訂正するためのコードである。

0085

ECCを生成するエンコード処理においては、ライトデータは複数のデータ部に分割されても良く、これら複数のデータ部に対応する複数のECC部が生成されても良い。また、幾つかの実施形態では、ライトデータのためのECCのならず、ライトデータ内の誤りを検出するためのエラー検出コード(例えばCRC)がさらに生成されても良い。このエラー検出コードは、ECCよりも多くのエラーを検出可能なコードであってもよい。ECCエンコーダ15Aは、ライトデータとエラー検出コードとを含む情報シンボルをエンコードし、これによってこの情報シンボルのためのECCを生成しても良い。

0086

ECCエンコーダ15AによってライトデータのためにECCが生成された後、このライトデータとECCが、ポピュレーション演算部23Aおよび反転/非反転演算部23Bの各々に送出される。そして、ライトデータとECCとを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。そして、この判定結果)と、対象のページ場所とに基づいて、ライトデータとECCとを含むデータ系列の全ビットが反転または非反転され、これによって符号化データ(ライトデータとECCとの組、または反転ライトデータと反転ECCとの組)が生成される。この符号化データは、NANDフラッシュメモリ5内の対象のページ場所に書き込まれる。

0087

あるいは、ポピュレーション演算部23Aは、1ページ分のサイズを有するライトデータのみに含まれる“1”のポピュレーション(“1”のビットの数)をカウントする演算を行い、これによってこのライトデータに“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定してもよい。また、反転/非反転演算部23Bは、ライトデータの各ビットを反転または非反転することによって、オリジナルライトデータまたは反転ライトデータのいずれかを符号化データとして出力してもよい。ライトデータの反転または非反転の動作は、ポピュレーション演算部23Aの演算結果(つまり、“0”のビットまたは“1”のビットのどちらが多く含まれるかを示す判定結果)と、ライトデータが書き込まれるべき対象のページ場所(MLCフラッシュメモリにおいては下位ページ/上位ページ、TLCフラッシュメモリにおいては下位ページ/中位ページ/上位ページ)とに基づいて、制御される。すなわち、ライトデータは、まず、ECCエンコーダ15Aに送出される。ECCエンコーダ15Aは、ライトデータをエンコードし、これによってライトデータのためのECCを生成する。ECCエンコーダ15AによってライトデータのためにECCが生成された後、このライトデータが、ポピュレーション演算部23Aおよび反転/非反転演算部23Bの各々に送出される。そして、ライトデータに“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定され、この判定結果と、対象のページ場所とに基づいて、ライトデータの全ビットが反転または非反転され、これによってライトデータに対応する符号化データが生成される。この符号化データは、オリジナルのライトデータに対応するECCと一緒に、NANDフラッシュメモリ5内の対象のページ場所に書き込まれる。

0088

図7は、MLCフラッシュメモリの下位ページに書き込まれるべきライトデータ(下位ページデータ)とこのライトデータのためのECCとを符号化する動作を示す。

0089

この場合、“1”の数を増やすエンコーディングを使用して、ライトデータとECCとを含むデータ系列が符号化される。

0090

したがって、もし図7の上部に示すように、ライトデータとECCとを含むデータ系列に含まれる“0”のビットの数が、このデータ系列に含まれる“1”のビットの数よりも多いならば、データ系列の全ビットを反転するビット反転動作が実行される。このビット反転動作は、データ系列内の“1”のビットを“0”のビットに変換し、且つデータ系列内の“0”のビットを“1”のビットに変換する。これによって、データ系列の反転データ(反転ライトデータ、および反転ECC)が符号化データとして生成される。そして、この符号化データは、NANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの下位ページ)に書き込まれる。

0091

一方、もし図7の下部に示すように、ライトデータとECCとを含むデータ系列に含まれる“1”のビットの数が、このデータ系列に含まれる“0”のビットの数よりも多いならば、ビット反転動作は実行されない。これによって、オリジナルのデータ系列(オリジナルのライトデータ、およびオリジナルのECC)自体が符号化データとして生成される。そして、この符号化データは、NANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの下位ページ)に書き込まれる。

0092

図8は、MLCフラッシュメモリの上位ページに書き込まれるべきライトデータ(上位ページデータ)とこのライトデータのためのECCとを符号化する動作を示す。

0093

この場合、“0”の数を増やすエンコーディングを使用してライトデータとECCとを含むデータ系列がエンコードされる。

0094

したがって、もし図8の上部に示すように、このデータ系列に含まれる“1”のビットの数が、このデータ系列に含まれる“0”のビットの数よりも多いならば、このデータ系列の全ビットを反転するビット反転動作が実行される。これによって、データ系列の反転データ(反転ライトデータ、および反転ECC)が符号化データとして生成される。そして、この符号化データは、NANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの上位ページ)に書き込まれる。

0095

一方、もし図8の下部に示すように、このデータ系列に含まれる“0”のビットの数が、このデータ系列に含まれる“1”のビットの数よりも多いならば、ビット反転動作は実行されず、これによってオリジナルのデータ系列自体が符号化データとして生成される。そして、この符号化データは、NANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの上位ページ)に書き込まれる。

0096

図9は、MLCフラッシュメモリの下位ページに書き込まれるべきライトデータ(下位ページデータ)のみを符号化し、符号化されたライトデータをオリジナルのライトデータのためのECCと一緒に書き込む動作を示す。

0097

この場合、“1”の数を増やすエンコーディングを使用してライトデータがエンコードされる。

0098

したがって、もし図9の上部に示すように、ライトデータに含まれる“0”のビットの数が、ライトデータに含まれる“1”のビットの数よりも多いならば、ライトデータの全ビットを反転するビット反転動作が実行される。このビット反転動作は、ライトデータ内の“1”のビットを“0”のビットに変換し、且つライトデータ内の“0”のビットを“1”のビットに変換する。これによって、ライトデータの反転データが符号化データとして生成される。そして、この符号化データは、オリジナルのライトデータに対応するECCと一緒にNANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの下位ページ)に書き込まれる。

0099

一方、もし図9の下部に示すように、ライトデータに含まれる“1”のビットの数が、ライトデータに含まれる“0”のビットの数よりも多いならば、ビット反転動作は実行されない。これによって、オリジナルのライトデータ自体が符号化データとして生成される。そして、この符号化データは、オリジナルのライトデータに対応するECCと一緒に、NANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの下位ページ)に書き込まれる。

0100

図10は、MLCフラッシュメモリの上位ページに書き込まれるべきライトデータ(上位ページデータ)のみを符号化し、符号化されたライトデータをオリジナルのライトデータのためのECCと一緒に書き込む動作を示す。

0101

この場合、“0”の数を増やすエンコーディングを使用してライトデータがエンコードされる。

0102

したがって、もし図10の上部に示すように、ライトデータに含まれる“1”のビットの数が、ライトデータに含まれる“0”のビットの数よりも多いならば、ライトデータの全ビットを反転するビット反転動作が実行される。これによって、ライトデータの反転データが符号化データとして生成される。そして、この符号化データは、オリジナルのライトデータに対応するECCと一緒に、NANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの上位ページ)に書き込まれる。

0103

一方、もし図10の下部に示すように、ライトデータに含まれる“0”のビットの数が、ライトデータに含まれる“1”のビットの数よりも多いならば、ビット反転動作は実行されず、これによってオリジナルのライトデータ自体が符号化データとして生成される。そして、この符号化データは、オリジナルのライトデータに対応するECCと一緒に、NANDフラッシュメモリ5内の対象のページ場所(ここでは、ある物理ページの上位ページ)に書き込まれる。

0104

図11は、エンデュランスコードエンコーダ/デコーダ23内のエンデュランスデコーダの構成例を示す。

0105

エンデュランスデコーダは、セレクタ23Cおよび反転演算部23Dを含む。セレクタ23Cおよび反転演算部23Dは、通常は、NANDフラッシュメモリ5から読み出されたデータおよびECCを反転せず、NANDフラッシュメモリ5から読み出されたデータおよびECCをECCデコーダ15Bに送出する。もしECCデコーダ15BのECCデコード処理で復号失敗が起きた場合には、セレクタ23Cおよび反転演算部23Dは、NANDフラッシュメモリ5から読み出されたデータおよびNANDフラッシュメモリ5から読み出されたECCの各々に対するビット反転動作を実行し、反転データおよび反転ECCをECCデコーダ15Bに送出する。

0106

データ読み出し動作においては、まず、読み出し対象のページからデータとECCとが読み出される。読み出されたデータおよび読み出されたECCは、セレクタ23Cの第1入力に供給される。また、読み出されたデータおよび読み出されたECCは、反転演算部23Dにも供給される。反転演算部23Dは、NANDフラッシュメモリ5から読み出されたデータおよびNANDフラッシュメモリ5から読み出されたECCの各々に対するビット反転動作を実行し、読み出されたデータの各ビットが反転された反転データ、および読み出されたECCの各ビットが反転された反転ECCを生成する。反転データおよび反転ECCは、セレクタ23Cの第2入力に供給される。

0107

通常は、セレクタ23Cは、第1入力を選択する。このため、読み出されたデータおよびECCがECCデコーダ15Bに送出される。ECCデコーダ15Bは、データおよびECCを使用して、このデータの誤り訂正のための誤り訂正復号処理(ECCデコード処理)を実行する。

0108

もし、読み出し対象のページに反転データおよび反転ECCが格納されているにもかかわらず、読み出されたデータおよびECCを使用したECCデコード処理が実行されたならば、このECCのエラー訂正能力を超える数のエラーの存在に起因してECCデコード処理で復号失敗が起きる。ECCデコーダ15Bは、復号失敗をセレクタ23Cに通知する。この通知を受信した場合、セレクタ23Cは、第2入力を選択する。この結果、反転データおよび反転ECCがECCデコーダ15Bに送出される。ECCデコーダ15Bは、反転データおよび反転ECCを使用して、上述のECCデコード処理を再実行する。

0109

なお、ライトデータのみを符号化し、符号化されたライトデータをオリジナルのライトデータのためのECCと一緒に書き込むケースの場合には、反転演算部23Dは、NANDフラッシュメモリ5から読み出されたデータのみを反転してもよい。

0110

図12は、MLCフラッシュメモリにおいて、エンデュランスコードエンコーディングの適用前における閾値電圧分布“Er”および閾値電圧分布“C”それぞれの出現確率と、エンデュランスコードエンコーディングの適用後における閾値電圧分布“Er”および閾値電圧分布“C”それぞれの出現確率とを示す。

0111

ここでは、ライトデータ内に含まれる“1”または“0”の一方の割合が高い場合を想定する。

0112

例えば、“1”のビットの数と“0”のビットと数との割合が6:4で偏っている場合においては(“1”の数:“0”の数 = 6:4)、エンデュランスコードエンコーディングの適用前(改善前)における閾値電圧分布“Er”および“C”の出現確率は、図12右部に示すように、“0.36”、“0.24”である。一方、エンデュランスコードエンコーディングの適用後(改善後)においては、閾値電圧分布“Er”および“C”の出現確率は、図12の左部に示すように、“0.24”、“0.16”に低下される。

0113

図13は、TLCフラッシュメモリにおいて、エンデュランスコードエンコーディングの適用前における閾値電圧分布“Er”および“G”それぞれの出現確率と、エンデュランスコードエンコーディングの適用後における閾値電圧分布“Er”および“G”それぞれの出現確率とを示す。

0114

ここでは、ライトデータ内に含まれる“1”または“0”の一方の割合が高い場合を想定する。

0115

例えば、“1”のビットの数と“0”のビットと数との割合が6:4で偏っている場合においては(“1”の数:“0”の数 = 6:4)、エンデュランスコードエンコーディングの適用前(改善前)における閾値電圧分布“Er”および“G”の出現確率は、図13の上部に示すように、“0.216”、“0.144”である。

0116

エンコード方法#1の適用後(改善後)においては、閾値電圧分布“Er”および“G”の出現確率は、図13の左下部に示すように、“0.096”、“0.064”に低下される。

0117

エンコード方法#2の適用後(改善後)においては、閾値電圧分布“Er”および“G”の出現確率は、図13の右下部に示すように、“0.144”、“0.096”に低下される。

0118

図14は、エンデュランスコードエンコーダの別の構成例を示す。

0119

図14のエンデュランスコードエンコーダにおいては、データ圧縮処理が組み合わせられている。

0120

この圧縮処理は、ライトデータにおける“1”/“0”の偏りを増加させるために実行される。これにより、符号化データに含まれる“1”のビットの数の割合がより高い符号化データ、または符号化データに含まれる“0”のビットの数の割合がより高い符号化データを得ることができる。

0121

図14のエンデュランスコードエンコーダは、ポピュレーション演算部23Aと反転/非反転演算部23Bとに加え、ライトデータを圧縮するように構成された圧縮部71をさらに含む。このエンデュランスコードエンコーダは、パディング部72、回転部73、選択部74をさらに含んでもよい。

0122

1ページ分のサイズを有するライトデータ(ページデータ)60は、圧縮部71に送出される。圧縮部71は、ライトデータ60を圧縮する。この場合、圧縮部71は、ライトデータ60を可逆圧縮してもよい。通常、ライトデータ60を圧縮することによって得られる圧縮データ61(圧縮されたライトデータ)のサイズは、圧縮前のライトデータ(ページデータ)のサイズ(1ページのサイズ)よりも小さくなる。圧縮データ61は、パディング部72に送出される。

0123

パディング部72は、ライトデータを圧縮することによって得られる、書き込むべきページデータ内の空き領域を、全て“1”のビット列または全て“0”のビット列を含むパディングデータでパディングする処理を実行する。空き領域のサイズは、1ページのサイズから圧縮データ61のサイズを引いた残りのサイズに相当する。つまり、パディングデータ(全て“1”のビット列または全て“0”のビット列)が圧縮データ61に追加され、圧縮データ61とパディングデータとを含むデータ系列が生成される。このデータ系列は、1ページのサイズを有しており、書き込むべきページデータとして扱われる。

0124

パディングデータは、圧縮データ61に後続する位置に追加されてもよいし、複数のパディングデータ部に分割され且つ複数のパディング位置に分散されてもよい。パディングデータのビット列が追加(挿入)されるべきページデータ内の位置は、数学的規則(計算)に基づいて決定することができる。図14においては、パディングデータが3つのパディングデータ部に分割され、且つこれら3つのパディングデータ部が3つのパディング位置に分散された場合が例示されている。

0125

パディング処理においては、パディング部72は、圧縮データ61に含まれる“1”のビットの数(または“0”のビットの数)をカウントして、圧縮データ61に“0”のビットまたは“1”のビットのどちらが多く含まれるかを判定してもよい。

0126

圧縮データ61に含まれる“1”のビットの数が、圧縮データ61に含まれる“0”のビットの数よりも多い場合には、パディング部72は、全て“1”のビット列を使用してパディング処理を実行する。これにより、書き込むべきページデータ内の“1”/“0”の偏りをおすることができる。

0127

一方、圧縮データ61に含まれる“0”のビットの数が、圧縮データ61に含まれる“1”のビットの数よりも多い場合には、パディング部72は、全て“0”のビット列を使用してパディング処理を実行する。これにより、書き込むべきページデータ内の“1”/“0”の偏りをお菊することができる。

0128

なお、圧縮データ61に含まれる“0”のビットの数と“1”のビットの数とがほぼ等しい場合には、パディング処理は、全て“1”のビット列または全て“0”のビット列のどちらを使用して実行されてもよい。

0129

また、圧縮データ61の“0”/“1”の偏りの状況とは無関係に、常に、全て“1”のビット列(または全て“0”のビット列)がパディングデータとして使用されてもよい。

0130

回転部73は、予め決められた複数のパディング用の位置の間で、パディングデータの位置をローテーションさせる。これは、圧縮データ61に起因するメモリセルの摩耗の量とパディングデータに起因するメモリセルの摩耗の量とが互い異なるからである。複数のパディング用の位置を使用してパディングデータ位置をローテーションさせることにより、摩耗を全てのメモリセル位置に均等に分散させることが可能となる。

0131

例えば、予め決められた3つのパディング用の位置を使用する場合においては、書き込み先ブロックへの一回目書き込み動作においては、どのページにデータが書き込まれる場合であっても、パディングデータは、最初のパディング用の位置に設定される。この書き込み先ブロックの消去動作が実行された後にこの書き込み先ブロックへの二回目の書き込み動作が行われる場合には、どのページにデータが書き込まれる場合であっても、パディングデータは、二番目のパディング用の位置に設定される。そして、この書き込み先ブロックの消去動作が実行された後にこの書き込み先ブロックへの三回目の書き込みが行われる場合には、どのページにデータが書き込まれる場合であっても、パディングデータは、三番目のパディング用の位置に設定される。

0132

パディングデータをページ内の複数のパディング位置に分散させ、且つパディングデータの位置を複数のパディング用の位置の間でローテーションさせる場合においては、パディングデータは、予め決められた複数のパディング位置セットの間で、ローテーションされる。複数のパディング位置セットの各々は、複数のパディング位置を含んでいる。

0133

選択部74は、圧縮データ61とパディングデータとを含むデータ系列、または圧縮前のライトデータ60のいずれかを、書き込むべきページデータとして選択する。

0134

もし圧縮前のライトデータ60の“0”/“1”の偏りが、パディングデータが追加された圧縮データ61の“0”/“1”の偏りよりも大きいならば、選択部74は、圧縮前のライトデータ60を書き込むべきページデータとして選択してもよい。

0135

より詳しくは、選択部74は、ライトデータ60の“0”または“1”の偏りと、パディングデータが追加された圧縮データ61の0”または“1”の偏りを算出する。そして、選択部74は、ライトデータ60、およびパディングデータが追加された圧縮データ61から、“0”または“1”の偏りが大きい方のデータを選択する。もしライトデータ60よりも、パディングデータが追加された圧縮データ61の方が“0”または“1”の高い偏りを有するならば、パディングデータが追加された圧縮データ61が、書き込むべきページデータとして選択される。一方、もしパディングデータが追加された圧縮データ61よりも、ライトデータ60の方が“0”または“1”の高い偏りを有するならば、ライトデータ60が、書き込むべきページデータとして選択される。

0136

選択データは、書き込むべきページデータとして扱われる。

0137

この場合、選択データが、ポピュレーション演算部23Aおよび反転/非反転演算部23Bの各々に送出される。そして、選択データに“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定され、この判定結果と、選択データが書き込まれるべき対象のページ場所とに基づいて、選択データの全ビットが反転または非反転され、これによって選択データに対応する符号化データが生成される。この符号化データは、ECCエンコーダ15Aによって生成されるオリジナルの選択データに対応するECCと一緒に、NANDフラッシュメモリ5内の対象のページ場所に書き込まれてもよい。

0138

あるいは、ECCエンコーダ15Aは、ポピュレーション演算部23Aおよび反転/非反転演算部23Bの前段に配置されていてもよい。この場合、まず、選択データのためのECCがECCエンコーダ15Aによって生成される。この選択データとこのECCとが、ポピュレーション演算部23Aおよび反転/非反転演算部23Bの各々に送出される。そして、選択データとECCとを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。この判定結果と、選択データが書き込まれるべき対象のページ場所とに基づいて、選択データとECCとを含むデータ系列の全ビットが反転または非反転され、これによって符号化データ(選択データとECCとの組、または反転選択データと反転ECCとの組)が生成される。そして、この符号化データは、NANDフラッシュメモリ5内の対象のページ場所に書き込まれる。

0139

図15は、パディングおよび回転(ローテーション)の動作を示す。

0140

まず、ライトデータが圧縮され、圧縮データが生成される。そして、この圧縮データの空き領域(書き込むべきページデータの空き領域)を、全て“1”のビット列または全て“0”のビット列を含むパディングデータでパディングする処理が実行される。圧縮データのサイズはオリジナルのライトデータによって異なる場合がある。このため、下位ページデータに対応する圧縮データのサイズは、上位ページデータに対応する圧縮データのサイズと異なる場合がある。図15では、下位ページデータに対応する圧縮データのサイズよりも、上位ページデータに対応する圧縮データのサイズが大きい場合が想定されている。この場合、上位ページデータに対応するパディングデータのサイズは、下位ページデータに対応するパディングデータのサイズよりも小さくなる。

0141

この場合、これら下位ページデータおよび上位ページデータの双方が書き込まれる物理ページは、メモリセルの摩耗の量が互いに異なる3つのエリア(エリア#1、エリア#2、エリア#3)に論理的に分割される。エリア#1においては、各メモリセルに格納される2ビット符号は、下位ページデータ内の圧縮データのある1ビットと上位ページデータ内の圧縮データ内のある1ビットとを含む。エリア#2においては、各メモリセルに格納される2ビット符号は、下位ページデータ内のパディングデータのある1ビットと上位ページデータ内の圧縮データ内のある1ビットとを含む。エリア#3においては、各メモリセルに格納される2ビット符号は、下位ページデータ内のパディングデータのある1ビットと上位ページデータ内のパディングデータ内のある1ビットとを含む。パディングデータは全て“1”のビット列または全て“0”のビット列であるので、下位ページデータ/上位ページデータ内のパディングデータの反転/非反転動作により、エリア#3内の各メモリセルを摩耗の少ないデータ状態にプログラムすることができ、これによってエリア#3内の各メモリセルの摩耗を最も小さくすることができる。つまり、エリア#3は、摩耗の少ないデータ状態の出現確率が最も高いエリアである。一方、通常、圧縮データは“1”のビットと“0”のビットとが混在されたビットパターンであるので、エリア#1内の各メモリセルの摩耗は、エリア#3内の各メモリセルおよびエリア#2内の各メモリセルの摩耗よりも大きくなる可能性がある。

0142

本実施形態では、パディングデータの位置は、予め決められた複数のパディング用の位置の間でローテーションされる。例えば、物理ページのサイズが8KBである場合、パディングデータが付加されたライトデータの開始位置を、ページ内の位置(例えば、0KB目、2KB目、4KB目、6KB目)の間でローテーションしてもよい。このように、複数のパディング用の位置を使用してパディングデータの位置をローテーションすることにより、エリア#3の位置を物理ページ全体に分散させることができ、これによって摩耗の量を全てのメモリセル位置に均等に分散させることが可能となる。

0143

図16は、パディングおよび回転(ローテーション)の別の動作を示す。

0144

まず、ライトデータが圧縮され、圧縮データが生成される。そして、この圧縮データの空き領域(書き込むべきページデータの空き領域)を、全て“1”のビット列または全て“0”のビット列を含むパディングデータでパディングする処理が実行される。パディングデータは複数のパディングデータ部に分割され、これらパディングデータ部が複数の位置に分散される。

0145

下位ページデータおよび上位ページデータのどちらにおいても、これら複数のパディングデータ部それぞれのパディング位置は、予め決められた複数のパディング用の位置セットの間でローテーションされる。したがって、エリア#3の位置を物理ページ内の全てのメモリセル位置に均等に分散させることができる。

0146

図17は、図14のエンデュランスコードエンコーダに適用される符号化動作を示す。

0147

圧縮データとパディングデータとを含むデータ系列に含まれる“1”のビットの数がカウントされ、これによってこのデータ系列に “0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。そして、この判定結果と、このデータ系列が書き込まれるべき対象のページ場所とに基づいて、このデータ系列の全ビットが反転または非反転され、これによって符号化データが生成される。この符号化データは、ECCエンコーダ15Aによって生成されるオリジナルのデータ系列(圧縮データ+パディングデータ)に対応するECCと一緒に、NANDフラッシュメモリ5内の対象のページ場所に書き込まれる。

0148

図18は、図14のエンデュランスコードエンコーダに適用される別の符号化動作を示す。

0149

まず、圧縮データとパディングデータとを含むデータ系列のためのECCが生成される。そして、圧縮データとパディングデータとECCとを含むデータ系列に含まれる“1”のビットの数がカウントされ、これによってこのデータ系列(圧縮データ+パディングデータ+ECC)に“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。そして、この判定結果と、このデータ系列(圧縮データ+パディングデータ+ECC)が書き込まれるべき対象のページ場所とに基づいて、このデータ系列(圧縮データ+パディングデータ+ECC)の全ビットが反転または非反転され、これによって符号化データが生成される。この符号化データは、NANDフラッシュメモリ5内の対象のページ場所に書き込まれる。

0150

図19は、図14のエンデュランスコードエンコーダによって生成される符号化データのフォーマットの例を示す
この符号化データは、データ(圧縮データ+パディングデータ)およびECCに加え、さらに、回転情報ローテーション情報)および圧縮フラグを符号化の内容を示す付帯情報として含んでいても良い。回転情報は、使用されたパディング用位置を示す。圧縮フラグは、データが圧縮されているか否かを示す。

0151

なお、回転情報(ローテーション情報)および圧縮フラグは、データ(圧縮データ+パディングデータ)およびECCが書き込まれる物理ページとは異なる、NANDフラッシュメモリ5内の記憶領域(管理情報用予約領域)に管理情報として保存されてもよい。

0152

また、図20に示すように、符号化データは、回転情報(ローテーション情報)および圧縮フラグに加え、さらに、反転フラグを符号化の内容を示す付帯情報として含んでいても良い。反転フラグは、データ(圧縮データ+パディングデータ)が反転されているか否かを示す。回転情報(ローテーション情報)、圧縮フラグおよび反転フラグは、データ(圧縮データ+パディングデータ)およびECCが書き込まれる物理ページとは異なる、NANDフラッシュメモリ5内の領域に管理情報として保存されてもよい。

0153

符号化データが反転フラグを含む場合には、ECCは、図21に示すように、反転/非反転されたデータ(圧縮データ+パディングデータ)から生成されてもよい。

0154

この場合、まず、圧縮データとパディングデータとを含むデータ系列に含まれる“1”のビットの数がカウントされ、これによってこのデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。そして、この判定結果と、このデータ系列が書き込まれるべき対象のページ場所とに基づいて、このデータ系列の全ビットが反転または非反転され、これによって符号化データが生成される。そしてこの符号化データのためのECCが生成され、符号化データが、この符号化データから生成されたECCと一緒に、NANDフラッシュメモリ5内の対象のページ場所に書き込まれる。

0155

図22のフローチャートは、NANDフラッシュメモリ5にデータを書き込むためのライト動作の手順を示す。ここでは、NANDフラッシュメモリ5がMLCフラッシュメモリである場合を想定する。

0156

コントローラ4は、書き込むべきライトデータをライトバッファ(WB)31から読み出し、このライトデータのためのECCを生成する(ステップS11)。コントローラ4は、ライトデータとECCとを含むデータ系列に含まれる“1”のポピュレーション(“1”のビットの数)をカウントする演算(ポピュレーション演算)を行う(ステップS12)。

0157

そして、コントローラ4は、このライトデータが書き込まれるべき対象ページ場所が下位ページまたは上位ページのいずれであるかを判定する(ステップS13)。この判定は、対象ページ場所のページアドレスに基づいて行われてもよい。

0158

対象ページ場所が下位ページであるならば、コントローラ4は、このデータ系列(ライトデータ+ECC)内の“1”の数を増やすエンコーディングを使用して、このデータ系列(ライトデータ+ECC)をエンコードする。この場合、もしこのデータ系列(ライトデータ+ECC)内の“0”のビットの数がこのデータ系列(ライトデータ+ECC)内の“1”のビットの数よりも多いならば(ステップS14のYES)、コントローラ4は、このデータ系列(ライトデータ+ECC)の全ビットを反転することによってこのデータ系列(ライトデータ+ECC)の反転データ(ライトデータの各ビットが反転された反転ライトデータとECCの各ビットが反転された反転ECCとの組)を符号化データとして出力する(ステップS15)。一方、もしこのデータ系列(ライトデータ+ECC)内の“1”のビットの数がこのデータ系列(ライトデータ+ECC)内の“0”のビットの数よりも多いならば(ステップS14のNO)、コントローラ4は、このデータ系列(ライトデータ+ECC)を反転せずに、このデータ系列(ライトデータ+ECC)自体を符号化データとして出力する。

0159

そして、コントローラ4は、符号化データ(反転ライトデータと反転ECCとの組、またはライトデータとECCとの組)をNANDフラッシュメモリ5内の対象ページ場所に書き込む(ステップS16)。

0160

対象ページ場所が上位ページであるならば、コントローラ4は、このデータ系列(ライトデータ+ECC)内の“0”の数を増やすエンコーディングを使用して、このデータ系列(ライトデータ+ECC)をエンコードする。この場合、もしこのデータ系列(ライトデータ+ECC)内の“1”のビットの数がこのデータ系列(ライトデータ+ECC)内の“0”のビットの数よりも多いならば(ステップS17のYES)、コントローラ4は、このデータ系列(ライトデータ+ECC)の全ビットを反転することによってこのデータ系列(ライトデータ+ECC)の反転データ(ライトデータの各ビットが反転された反転ライトデータとECCの各ビットが反転された反転ECCとの組)を符号化データとして出力する(ステップS18)。一方、もしこのデータ系列(ライトデータ+ECC)内の“0”のビットの数がこのデータ系列(ライトデータ+ECC)内の“1”のビットの数よりも多いならば(ステップS17のNO)、コントローラ4は、このデータ系列(ライトデータ+ECC)を反転せずに、このデータ系列(ライトデータ+ECC)自体を符号化データとして出力する。

0161

そして、コントローラ4は、符号化データ(反転ライトデータと反転ECCとの組、またはライトデータとECCとの組)をNANDフラッシュメモリ5内の対象ページ場所に書き込む(ステップS19)。

0162

図23のフローチャートは、図22のライト動作によって書き込まれたデータのためのリード動作の手順を示す。

0163

コントローラ4がホスト2からリードコマンド(リード要求とも云う)を受信した場合、コントローラ4は、リードコマンド内のLBAに対応する物理アドレスによって指定されるNANDフラッシュメモリ5内のページからデータ(ここでは、データおよびECC)を読み出す(ステップS21)。コントローラ4は、読み出されたデータと読み出されたECCとを使用して、読み出されたデータの誤り訂正のためのECC復号処理(ECCデコード処理)を実行する(ステップS22)。もしライトデータの反転データおよびECCの反転ECCがこのページに書き込まれていたならば、ECCデコード処理の復号失敗が起きる。

0164

ECCデコード処理の復号失敗が起きなかったならば(ステップS23のNO)、コントローラ4は、ECCデコード処理によって復号されたデータをホスト2に返す(ステップS24)。

0165

一方、ECCデコード処理の復号失敗が起きたならば(ステップS23のYES)、コントローラ4は、読み出されたデータおよび読み出されたECCを含むデータ系列の全ビットを反転して、読み出されたデータの各ビットが反転された反転データと、読み出されたECCの各ビットが反転された反転ECCとを生成する(ステップS25)。コントローラ4は、反転データと反転ECCとを使用してECCデコード処理を再実行し(ステップS26)、ECCデコード処理によって復号されたデータをホスト2に返す(ステップS27)。

0166

図24のフローチャートは、NANDフラッシュメモリ5にデータを書き込むためのライト動作の別の手順を示す。ここでは、NANDフラッシュメモリ5がMLCフラッシュメモリである場合を想定する。

0167

コントローラ4は、書き込むべきライトデータをライトバッファ(WB)31から読み出し、このライトデータのためのECCを生成する(ステップS31)。コントローラ4は、ライトデータに含まれる“1”のポピュレーション(“1”のビットの数)をカウントする演算(ポピュレーション演算)を行う(ステップS32)。

0168

そして、コントローラ4は、このライトデータが書き込まれるべき対象ページ場所が下位ページまたは上位ページのいずれであるかを判定する(ステップS33)。

0169

対象ページ場所が下位ページであるならば、コントローラ4は、ライトデータ内の“1”の数を増やすエンコーディングを使用して、ライトデータをエンコードする。この場合、もしライトデータ内の“0”のビットの数がこのライトデータ内の“1”のビットの数よりも多いならば(ステップS34のYES)、コントローラ4は、ライトデータの全ビットを反転することによって、ライトデータの各ビットが反転された反転ライトデータを符号化データとして出力する(ステップS35)。一方、もしこのライトデータ内の“1”のビットの数がこのライトデータ内の“0”のビットの数よりも多いならば(ステップS34のNO)、コントローラ4は、このライトデータを反転せずに、このライトデータ自体を符号化データとして出力する。

0170

そして、コントローラ4は、ステップS31で生成されたECCが付加された符号化データ、つまり反転ライトデータとステップS31で生成されたECCとの組、またはライトデータとステップS31で生成されたECCとの組のいずれかを、NANDフラッシュメモリ5内の対象ページ場所に書き込む(ステップS36)。

0171

対象ページ場所が上位ページであるならば、コントローラ4は、ライトデータ内の“0”の数を増やすエンコーディングを使用して、ライトデータをエンコードする。この場合、もしライトデータ内の“1”のビットの数がこのライトデータ内の“0”のビットの数よりも多いならば(ステップS37のYES)、コントローラ4は、ライトデータの全ビットを反転することによって、ライトデータの各ビットが反転された反転ライトデータを符号化データとして出力する(ステップS38)。一方、もしこのライトデータ内の“0”のビットの数がこのライトデータ内の“1”のビットの数よりも多いならば(ステップS37のNO)、コントローラ4は、このライトデータを反転せずに、このライトデータ自体を符号化データとして出力する。

0172

そして、コントローラ4は、ステップS31で生成されたECCが付加された符号化データ、つまり反転ライトデータとステップS31で生成されたECCとの組、またはライトデータとステップS31で生成されたECCとの組のいずれかを、NANDフラッシュメモリ5内の対象ページ場所に書き込む(ステップS39)。

0173

図25のフローチャートは、図24のライト動作によって書き込まれたデータのためのリード動作の手順を示す。

0174

コントローラ4がホスト2からリードコマンド(リード要求とも云う)を受信した場合、コントローラ4は、リードコマンド内のLBAに対応する物理アドレスによって指定されるNANDフラッシュメモリ5内のページからデータ(ここでは、データおよびECC)を読み出す(ステップS41)。コントローラ4は、読み出されたデータと読み出されたECCとを使用して、読み出されたデータの誤り訂正のためのECC復号処理(ECCデコード処理)を実行する(ステップS42)。もしライトデータの反転データがこのページに書き込まれていたならば、ECCデコード処理の復号失敗が起きる。

0175

ECCデコード処理の復号失敗が起きなかったならば(ステップS43のNO)、コントローラ4は、ECCデコード処理によって復号されたデータをホスト2に返す(ステップS44)。

0176

一方、ECCデコード処理の復号失敗が起きたならば(ステップS43のYES)、コントローラ4は、読み出されたデータの全ビットを反転して、読み出されたデータの各ビットが反転された反転データを生成する(ステップS45)。コントローラ4は、反転データと読み出されたECCとを使用してECCデコード処理を再実行し(ステップS46)、ECCデコード処理によって復号されたデータをホスト2に返す(ステップS47)。

0177

図26のフローチャートは、図24のライト動作と圧縮処理とが組み合わされたライト動作の手順を示す。

0178

ここでは、NANDフラッシュメモリ5(MLCフラッシュメモリ)にデータを書き込む場合を想定する。

0179

圧縮処理が組み合わされたライト動作においては、図24のステップS31〜S39の処理の前にステップS51〜S57の処理が実行されてもよい。

0180

すなわち、コントローラ4は、まず、ライトデータを圧縮する(ステップS51)。コントローラ4は、ステップS51で生成された圧縮データに“1”または“0”のどちらのビットが多く含まれるかを判定する(ステップS52)。

0181

圧縮データに含まれる“1”のビットの数の割合が高いならば、コントローラ4は、“1”のビット列を圧縮データに追加することによって、ライトデータの空き領域を“1”のビット列でパディングするための処理を行う(ステップS53)。

0182

圧縮データに含まれる“0”のビットの数の割合が高いならば、コントローラ4は、“0”のビット列を圧縮データに追加することによって、ライトデータの空き領域を“0”のビット列でパディングするための処理を行う(ステップS54)。

0183

圧縮データに含まれる“1”のビットの数の割合と“0”のビットの数の割合が同じならば、コントローラ4は、“0”のビット列または“1”のビット列のいずれかの所定ビット列を圧縮データに追加することによって、ライトデータの空き領域をこの所定ビット列“0”でパディングするための処理を行う(ステップS55)。なお、圧縮データに含まれる“1”(または“0”)の数とは無関係に、“0”のビット列または“1”のビット列のいずれかの所定ビット列でライトデータの空き領域をパディングする処理が実行されても良い。

0184

パディングのための処理では、コントローラ4は、圧縮データを複数のデータ部に分け、パディング用のビット列を、これら複数のデータ部に後続する複数の位置(パディング位置)に分散させてもよい。さらに、コントローラ4は、これらパディング位置を、複数のパディング位置の間で回転(ローテート)させる処理を行ってもよい(ステップS56)。

0185

コントローラ4は、圧縮前のライトデータ、およびパディング用のビット列が追加された圧縮データの内、“0”または“1”の偏りが大きい方のデータを処理対象データとして選択する(ステップS57)。

0186

続くステップS31〜S39では、コントローラ4は、選択されたデータを、ライトデータとして扱うことによって、選択されたデータの反転/非反転データを符号化データとして出力し、この符号化データを選択されたデータのためのECCと一緒に、対象のページ場所に書き込む。

0187

図27のフローチャートは、図22のライト動作と圧縮処理とが組み合わされたライト動作の手順を示す。

0188

ここでは、NANDフラッシュメモリ5(MLCフラッシュメモリ)にデータを書き込む場合を想定する。

0189

圧縮処理が組み合わされたライト動作においては、図22のステップS11〜S19の処理の前に、図26で説明したステップS51〜S57の処理が実行されてもよい。

0190

図28のフローチャートは、図26のライト動作によって書き込まれたデータのためのリード動作の手順を示す。

0191

コントローラ4がホスト2からリードコマンド(リード要求とも云う)を受信した場合、コントローラ4は、リードコマンド内のLBAに対応する物理アドレスによって指定されるNANDフラッシュメモリ5内のページからデータ(ここでは、データおよびECC)を読み出す(ステップS61)。コントローラ4は、読み出されたデータと読み出されたECCとを使用して、読み出されたデータの誤り訂正のためのECC復号処理(ECCデコード処理)を実行する(ステップS62)。もし圧縮データとパディングデータとを含むデータ系列の反転データがこのページに書き込まれていたならば、ECCデコード処理の復号失敗が起きる。

0192

ECCデコード処理の復号失敗が起きなかったならば(ステップS63のNO)、コントローラ4は、ECCデコード処理によって復号されたデータからパディングデータを除去し(ステップS64)、パディングデータが除去された残りのデータを伸張し(ステップS65)、伸張されたデータをホスト2に返す(ステップS66)。

0193

一方、ECCデコード処理の復号失敗が起きたならば(ステップS63のYES)、コントローラ4は、読み出されたデータ(圧縮データとパディングデータ)の全ビットを反転して、読み出されたデータの各ビットが反転された反転データを生成する(ステップS67)。コントローラ4は、反転データと読み出されたECCとを使用してECCデコード処理を再実行する(ステップS68)。そして、コントローラ4は、ECCデコード処理によって復号されたデータからパディングデータを除去し(ステップS69)、パディングデータが除去された残りのデータを伸張し(ステップS70)、伸張されたデータをホスト2に返す(ステップS71)。

0194

図29のフローチャートは、図27のライト動作によって書き込まれたデータのためのリード動作の手順を示す。

0195

コントローラ4がホスト2からリードコマンド(リード要求とも云う)を受信した場合、コントローラ4は、リードコマンド内のLBAに対応する物理アドレスによって指定されるNANDフラッシュメモリ5内のページからデータ(ここでは、データおよびECC)を読み出す(ステップS81)。コントローラ4は、読み出されたデータと読み出されたECCとを使用して、読み出されたデータの誤り訂正のためのECC復号処理(ECCデコード処理)を実行する(ステップS82)。もし圧縮データとパディングデータとを含むデータ系列の反転データ、および反転ECCが、このページに書き込まれていたならば、ECCデコード処理の復号失敗が起きる。

0196

ECCデコード処理の復号失敗が起きなかったならば(ステップS83のNO)、コントローラ4は、ECCデコード処理によって復号されたデータからパディングデータを除去し(ステップS84)、パディングデータが除去された残りのデータを伸張し(ステップS85)、伸張されたデータをホスト2に返す(ステップS86)。

0197

一方、ECCデコード処理の復号失敗が起きたならば(ステップS83のYES)、コントローラ4は、読み出されたデータ(圧縮データとパディングデータ)と読み出されたECCとを含むデータ系列の全ビットを反転して、読み出されたデータの各ビットが反転された反転データと、読み出されたECCの各ビットが反転された反転ECCとを生成する(ステップS87)。コントローラ4は、反転データと反転ECCとを使用してECCデコード処理を再実行する(ステップS88)。そして、コントローラ4は、ECCデコード処理によって復号されたデータからパディングデータを除去し(ステップS89)、パディングデータが除去された残りのデータを伸張し(ステップS90)、伸張されたデータをホスト2に返す(ステップS91)。

0198

図30は、ホスト2として機能する情報処理装置のハードウェア構成例を示す。

0199

この情報処理装置は、サーバコンピュータ、またはパーソナルコンピュータとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。

0200

プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述のアプリケーションソフトウェアレイヤ41、OS42およびファイルシステム43を含む。

0201

また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。

0202

ネットワークコントローラ105は、有線LANコントローラ無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。

0203

コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。本実施形態では、複数のSSD3が複数のコネクタ107Aにそれぞれ接続される。コントローラ107は、SASexpander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。

0204

EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。EC108は、ユーザによる電源スイッチの操作に応じて情報処理装置をパワーオンおよびパワーオフする。EC108はワンチップマイクロコントローラのような処理回路として実現されている。EC108は、キーボード(KB)などの入力デバイスを制御するキーボードコントローラを内蔵していてもよい。

0205

図31は、複数のSSD3とホスト2とを含む情報処理装置の構成例を示す。

0206

この情報処理装置は、ラックに収容可能な薄い箱形筐体201を備える。多数のSSD3は筐体201内に配置されても良い。この場合、各SSD3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。

0207

システムボードマザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品実装されている。これら電子部品がホスト2として機能する。

0208

以上説明したように、本実施形態によれば、ライト動作では、1ページ分のサイズを有する第1ライトデータのための第1誤り訂正符号が生成され、第1ライトデータと第1誤り訂正符号とを含むデータ系列に“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。そして、この判定結果と、第1ライトデータが書き込まれるべき対象のページ場所とに基づいて、第1ライトデータと第1誤り訂正符号との組、または第1ライトデータの各ビットが反転された第2ライトデータと第1誤り訂正符号の各ビットが反転された第2誤り訂正符号との組のいずれかが対象のページ場所に書き込まれる。リード動作では、読み出し対象のページ場所からデータおよび誤り訂正符号が読み出され、読み出されたデータと読み出された誤り訂正符号とを使用して、読み出されたデータの誤り訂正のための誤り訂正復号処理が実行される。誤り訂正復号処理で復号失敗が起きた場合、読み出されたデータの各ビットが反転された反転データと読み出された誤り訂正符号の各ビットが反転された反転誤り訂正符号とを使用して誤り訂正復号処理が再実行される。

0209

また、第1ライトデータと第1誤り訂正符号とを含むデータ系列を反転/非反転する代わりに、第1ライトデータのみを反転/非反転してもよい。この場合、ライト動作では、第1ライトデータのための第1誤り訂正符号が生成され、第1ライトデータに“0”のビットまたは“1”のビットのどちらが多く含まれるかが判定される。そして、この判定結果と、第1ライトデータが書き込まれるべき対象のページ場所とに基づいて、第1ライトデータと第1誤り訂正符号との組、または第1ライトデータの各ビットが反転された第2ライトデータと第1誤り訂正符号との組のいずれかが対象のページ場所に書き込まれる。リード動作では、読み出し対象のページ場所からデータおよび誤り訂正符号が読み出され、読み出されたデータと読み出された誤り訂正符号とを使用して、読み出されたデータの誤り訂正のための誤り訂正復号処理が実行される。誤り訂正復号処理で復号失敗が起きた場合、読み出されたデータの各ビットが反転された反転データと読み出された誤り訂正符号とを使用して、誤り訂正復号処理が再実行される。

0210

このように、誤り訂正復号処理の復号失敗に応答して、データ(またはデータと誤り訂正符号の双方)を反転し、誤り訂正復号処理を再実行することにより、符号化データにライトデータの反転/非反転を示す切り換えフラグのような付帯情報を挿入すること無く、メモリセルの摩耗が少なく且つビットエラーレートを低減可能な符号化データを書き込むことができる。

0211

また、データ圧縮とパディングデータローテーションの処理をさらに追加することにより、両端の符号(“Er”に対応する2ビット符号、および“C”に対応する2ビット符号)の出現確率をさらに減らし、中間の符号(“B”に対応する2ビット符号、および“A”に対応する2ビット符号)の出現確率をさらに増やすことができる。また、複数のパディング用の位置を使用してパディングデータ位置がローテーションされるので、摩耗を全てのメモリセル位置に均等に分散させることが可能となる。

0212

また、本実施形態の処理は、メモリセル当たりに2ビットのデータを格納可能なMLCフラッシュメモリ、メモリセル当たりに3ビットのデータを格納可能なTLCフラッシュメモリのみならず、メモリセル当たりに4ビット以上のデータを格納可能な他のタイプのフラッシュメモリにも適用可能である。

0213

また、エンデュランスコードエンコーダ/デコーダ23用の圧縮処理および伸張処理は、コントローラ4内の専用のハードウェアによって実行してもよい。また、エンデュランスコードエンコーダ/デコーダ23の全ての機能をコントローラ4内の専用のハードウェアによって実現してもよい。

0214

また、本実施形態では、不揮発性メモリとしてNANDメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。

0215

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。

0216

2…ホスト、3…SSD、4…コントローラ、5…NANDメモリ、15…ECCエンコーダ/デコーダ、21…ライト動作制御部、22…リード動作制御部、23…エンデュランスコードエンコーダ/デコーダ。

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

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

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

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

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

関連性が強い人物一覧

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

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

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

関連する公募課題一覧

astavision 新着記事

サイト情報について

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

主たる情報の出典

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