(58)【調査した分野】(Int.Cl.,DB名)
前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階と、
前記予測の結果によって前記複数のエンコーディングスキームのうちの少なくとも一つのエンコーディングスキームを選択する段階とを含むことを特徴とする請求項1に記載のプログラム方法。
前記エンコーディングされたデータと前記読み出されたデータとの間の距離が閾値より小さい場合、前記エンコーディング情報を含むフラグデータを生成し、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が前記閾値以上である場合、前記予測の結果によって前記複数のエンコーディングスキームのうち、他のエンコーディングスキームを選択し、前記選択された他のエンコーディングスキームを用いて前記プログラムデータをエンコーディングし、前記フラグデータを生成する段階をさらに含むことを特徴とする請求項2に記載のプログラム方法。
前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
前記複数のエンコーディングスキームを順に選択し、選択されたエンコーディングスキームを用いて、前記プログラムデータをエンコーディングして候補データを生成する段階と、
前記プログラムデータ及び候補データを前記読み出されたデータと各々比較する段階と、
前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択する段階と、
前記エンコーディング情報を含むフラグデータを生成する段階とを含むことを特徴とする請求項1に記載のプログラム方法。
前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
複数のエンコーディングスキームを選択し、前記選択された複数のエンコーディングスキームを組み合わせ、前記プログラムデータをエンコーディングし、前記エンコーディング情報を含むフラグデータを生成する段階を含むことを特徴とする請求項1に記載のプログラム方法。
前記エンコーディング情報は、前記プログラムデータ及び前記少なくとも一つのエンコーディングスキームによって生成される候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項1に記載のプログラム方法。
前記プログラムデータは、複数のサブデータに分割され、前記複数のサブデータの各々に対して、前記少なくとも一つのエンコーディングスキームが選択されることを特徴とする請求項1に記載のプログラム方法。
前記エンコーディングされたデータが選択されず、前記再び実行する段階が予め決められた回数だけ実行されれば、前記プログラムデータ及び前記循環シフトによって生成された候補データのうち、前記読み出されたデータと最も距離が近いデータが前記エンコーディングされたデータとして選択されることを特徴とする請求項15に記載のプログラム方法。
前記データエンコーディング部は、複数のエンコーディングのスキームのうちで少なくとも一つのエンコーディングスキームを選択し、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングするようにさらに構成されることを特徴とする請求項17に記載のメモリシステム。
前記データエンコーディング部は、前記プログラムデータを循環シフトエンコーディングして候補データを生成し、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択するようにさらに構成されることを特徴とする請求項17に記載のメモリシステム。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、消費電力の減少した不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法を提供することにある。
【課題を解決するための手段】
【0006】
メモリにデータをプログラムする本発明の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含
み、前記複数のエンコーディングスキームは、循環シフトエンコーディングスキーム、及び反転エンコーディングスキームを含むことを特徴とする。
【0007】
実施形態として、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階と、前記予測の結果によって前記複数のエンコーディングスキームのうちの少なくとも一つのエンコーディングスキームを選択する段階とを含む。
実施形態として、前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階は、前記読み出されたデータとプログラムデータとの間の同一のビット及び変換ビットを各々カウントする段階を含む。
【0008】
実施形態として
、前記予測の結果によって、少なくとも一つのエンコーディングスキームを選択する段階と、前記プログラムデータをエンコーディングする段階とは、前記変換ビットの数と同一のビットの数の差が閾値より小さい場合、前記循環シフトエンコーディングスキームを選択して、プログラムデータをシフトし、前記差が前記閾値以上の場合、前記反転エンコーディングスキームを選択して、前記プログラムデータを反転する段階を含む。
【0009】
実施形態として、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が閾値より小さい場合、前記エンコーディング情報を含むフラグデータを生成し、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が前記閾値以上の場合、前記予測の結果によって前記複数のエンコーディングスキームのうち、他のエンコーディングスキームを選択し、前記選択された他のエンコーディングスキームを用いて前記プログラムデータをエンコーディングし、前記フラグデータを生成する段階をさらに含む。
【0010】
実施形態として、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、前記複数のエンコーディングスキームを順に選択し、選択されたエンコーディングスキームを用いて、前記プログラムデータをエンコーディングして候補データを生成する段階と、前記プログラムデータ及び候補データを前記読み出されたデータと各々比較する段階と、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択する段階と、前記エンコーディング情報を含むフラグデータを生成する段階とを含む。
【0011】
実施形態として、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、複数のエンコーディングスキームを選択し、前記選択された複数のエンコーディングスキームを組み合わせて、前記プログラムデータをエンコーディングし、前記エンコーディング情報を含むフラグデータを生成する段階を含む。
【0012】
実施形態として、前記エンコーディング情報は、前記プログラムデータ及び前記少なくとも一つのエンコーディングスキームによって生成される候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として
、前記フラグデータは、前記エンコーディングされたデータが、前記プログラムデータから循環シフトされたビット数に対する情報を含む。
【0013】
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する差分エンコーディングスキームを
さらに含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
【0014】
実施形態として、前記複数のエンコーディングスキームは、予め設定されたデータと前記プログラムデータの論理演算を実行して、候補データを生成するバイナリマスクエンコーディングスキームを
さらに含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
【0015】
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータを反転して候補データを生成するビット反転エンコーディングスキームを含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として、前記プログラムデータは、複数のサブデータに分割され、前記複数のサブデータの各々について、前記少なくとも一つのエンコーディングスキームが選択される。
【0016】
メモリにデータをプログラムする本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、前記プログラムデータ及び読み出されたデータを複数のプログラムデータのグループと複数の読み出されたデータのグループに各々分割する段階と、前記複数のプログラムデータのグループの各々に対して、前記複数の読み出されたデータのグループのうち対応するグループに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いてエンコーディングを実行し、エンコーディング結果を組み合わせて、エンコーディングされたデータを生成する段階と、各プログラムデータのグループのエンコーディング情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含み
、前記複数のエンコーディングスキームは、差分エンコーディングスキーム、及び反転エンコーディングスキームを含むことを特徴とする。
【0017】
メモリにデータをプログラムする本発明の別の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記プログラムデータを候補データとして選択する段階と、前記候補データと前記読み出されたデータとを比較する段階と、前記比較の結果によって、前記候補データと前記読み出されたデータとの間の距離が基準値未満であれば、前記候補データをエンコーディングされたデータとして選択し、前記候補データと前記読み出されたデータとの間の距離が前記基準値以上であれば、前記候補データを循環シフトして、他の候補データを生成して前記比較する段階と、前記比較の結果によってエンコーディングされたデータを選択するか、又は他の候補データを選択する段階を再び実行する段階と、前記エンコーディングされたデータが、前記プログラムデータからシフトされたビット数に対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【0018】
実施形態として、前記エンコーディングされたデータが選択されず、前記再び実行する段階が予め決められた回数だけ実行されれば、前記プログラムデータ及び前記循環シフトによって生成された候補データのうち、前記読み出されたデータと最も距離が近いデータが前記エンコーディングされたデータとして選択される。
【0019】
本発明の実施形態に係るメモリシステムは、メモリと、前記メモリを制御するように構成されるコントローラとを含み、前記コントローラは、ランダムアクセスメモリと、外部からプログラムデータを受信して、前記ランダムアクセスメモリに格納するように構成されるホストインターフェースと、前記メモリから読み出されたデータを受信して、前記ランダムアクセスメモリに格納するように構成されるメモリインターフェースと、前記ランダムアクセスメモリに格納された前記読み出されたデータに基づいて、前記ランダムアクセスメモリに格納された前記プログラムデータをエンコーディングし、エンコーディングされたデータを前記ランダムアクセスメモリに格納するように構成されるデータエンコーディング部と、前記ランダムアクセスメモリに格納された前記エンコーディングされたデータを前記メモリにプログラムするように前記メモリインターフェースを制御するプロセッサとを含み、前記データエンコーディング部は、
複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記読み出されたデータ及び前記プログラムデータの比較結果によって前記エンコーディングされたデータを生成するようにさらに構成され
、前記複数のエンコーディングスキームは、循環シフトエンコーディングスキームを含むことを特徴とする。
【0020】
実施形態として、前記データエンコーディング部は、複数のエンコーディングスキームのうちで少なくとも一つのエンコーディングスキームを選択し、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングするようにさらに構成される。
実施形態として、前記データエンコーディング部は、前記プログラムデータを循環シフトエンコーディングして候補データを生成し、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択するようにさらに構成される。
実施形態として、前記メモリは、磁気RAM(Magnetic Random Access Memory)又は相変化メモリ(Phasechange Random Access Memory)を含む。
【0021】
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する段階と、前記プログラムデータ及び候補データのうち前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータ及び候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【0022】
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、予め設定されたデータと前記プログラムデータの論理演算を実行して候補データを生成する段階と、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータと候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含
み、前記論理演算は排他的論理積であることを特徴とする。
【0023】
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記受信されたプログラムデータを、第1及び第2部分に分割する段階と、
複数のエンコーディングスキームのうちで選択された第1エンコーディングスキームを用いて、前記受信されたプログラムデータの第1部分を
エンコーディングして、第1候補データを生成する段階と、
前記複数のエンコーディングスキームのうちで選択された第2エンコーディングスキームを用いて、前記受信されたプログラムデータの第2部分を
エンコーディングして第2候補データを生成する段階と、前記プログラムデータと第1及び第2候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータと、第1及び第2候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータと前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含
み、前記複数のエンコーディングスキームは、バイナリマスクエンコーディングスキーム及び反転エンコーディングスキームを含むことを特徴とする。
【発明の効果】
【0024】
本発明の実施形態によると、プログラムデータは不揮発性メモリに格納されているデータと近い距離にあるデータにエンコーディングされてプログラムされる。プログラムの時にスイッチングされるビットの数が減少するので、不揮発性メモリの消費電力が低減するようになる。
【発明を実施するための形態】
【0026】
以下、本発明が属する技術の分野における通常の知識を有する者が、本発明の技術的思想を容易に実施できる程度に詳細に説明するために、本発明の実施形態を添付の図面を参照して説明する。
図1は、本発明の第1実施形態に係るメモリシステム1000を示すブロック図である。
図1を参照すると、メモリシステム1000は不揮発性メモリ1100とコントローラ1200とを含んでいる。
【0027】
不揮発性メモリ1100は、コントローラ1200の制御によって動作するように構成される。不揮発性メモリ1100は、コントローラ1200から伝送される制御信号CTRL、コマンドCMD、アドレスADDR、データDATAに応答して、プログラム、読み出し、消去を行うことができる。不揮発性メモリ1100は不揮発性ランダムアクセスメモリを含むことができる。例えば、不揮発性メモリ1100は、PRAM(Phase−change RAM)、MRAM(Magnetic RAM)、RRAM(Resistive RAM)、FRAM(Ferroelectric RAM)などを含むことができる。不揮発性メモリ1100は、NANDフラッシュメモリを含むことができる。
【0028】
コントローラ1200は不揮発性メモリ1100を制御するように構成される。コントローラ1200は、制御信号CTRL、コマンドCMD、アドレスADDR、データDATAを不揮発性メモリ1100に伝送するか、または不揮発性メモリ1100と通信することができる。コントローラ1200は、外部ホスト(Host)の制御に応じて不揮発性メモリ1100を制御することができる。
【0029】
コントローラ1200は、データエンコーディング及びデコーディング部1260を含んでいる。データエンコーディング及びデコーディング部1260は、ホスト(Host)から伝送されるデータをエンコーディングするように構成される。エンコーディングされたデータは、不揮発性メモリ1100にプログラムすることができる。データエンコーディング及びデコーディング部1260は不揮発性メモリ1100から読み出されたデータをデコーディングするように構成される。デコーディングされたデータは、ホスト(Host)に伝送することができる。
【0030】
例示的に、不揮発性メモリ1100は、メモリセルに接続された導電線を介して電流を流し、メモリセルに格納されたデータ(例えば、論理状態)を変換してメモリセルにデータを格納することができる。すなわち、プログラムの時に、格納されたデータが変わるメモリセルの数は、メモリシステム1000の消費電力を決める重要な要因になり得る。
データエンコーディング及びデコーディング部1260は、プログラム時の消費電力を節減するようにデータをエンコーディングすることができる。例えば、データエンコーディング及びデコーディング部1260は、プログラムの時にメモリセルに格納されるデータとメモリセルに格納されたデータとの差が最小化するようにデータをエンコーディングすることができる。データエンコーディング及びデコーディング部1260の動作は、以下の図面を参照してより詳細に説明する。
【0031】
図1において、データエンコーディング及びデコーディング部1260は、コントローラ1200の構成要素として示されている。しかし、本発明の技術的思想はこの実施形態に限定されない。データエンコーディング及びデコーディング部1260を不揮発性メモリ1100に含むことも本発明の技術的思想の範疇に属し、本発明の権利範囲に属する。以下、説明の簡略化のため、データエンコーディング及びデコーディング部1260がコントローラ1200に属する実施形態を説明するが、本発明の技術的思想はこれに限定されない。
【0032】
メモリシステム1000は、PCカード(PCMCIA、personal computer memory card international association)、コンパクトフラッシュ(登録商標)カード(CF)、スマートメディアカード(SM、SMC、メモリスティック、マルチメディアカード(MMC、RS−MMC、MMCmicro)、SDカード(SD、miniSD、microSD、SDHC)、ユニバーサルフラッシュ記憶装置(UFS)などのメモリカードとして形成することができる。
メモリシステム1000は、SSD(Solid State Drive)として形成することができる。メモリシステム1000は、コンピュータシステムのメインメモリとして形成することができる。
【0033】
図2は、本発明の実施形態に係る不揮発性メモリ1100を示すブロック図である。
図1及び
図2を参照すると、不揮発性メモリ1100は、メモリセルアレイ1110と、行デコーダ1120と、列デコーダ1130と、アドレスデコーダ1140と、データ入出力回路1150と、電圧生成器及び制御ロジック1160とを含んでいる。
メモリセルアレイ1110は、複数のメモリセルを含んでいる。複数のメモリセルは、複数の不揮発性メモリセルとすることができる。複数のメモリセルは、ワードラインWLを介して行デコーダ1120に接続し、ビットラインBLを介して列デコーダ1130に接続している。例示的に、メモリセルアレイ1110の複数のメモリセルの行はワードラインWLに接続し、複数のメモリセルの列はビットラインBLに接続することができる。
【0034】
行デコーダ1120は、ワードラインWLを介してメモリセルアレイ1110と接続している。行デコーダ1120は、電圧生成器及び制御ロジック1160の制御によって動作することができる。行デコーダ1120は、アドレスデコーダ1140からデコーディングされた行アドレスDRAを受信し、デコーディングされた行アドレスDRAによってワードラインWLを各々選択または非選択することができる。行デコーダ1120は、電圧生成器及び制御ロジック1160から提供される電圧を、選択された少なくとも一つのワードライン及び非選択ワードラインに各々供給することができる。
【0035】
列デコーダ1130は、ビットラインBLを介してメモリセルアレイ1110と接続している。列デコーダ1120は、電圧生成器及び制御ロジック1160の制御によって動作することができる。列デコーダ1120は、アドレスデコーダ1140からデコーディングされた列アドレスDCAを受信し、デコーディングされた列アドレスDCAに応じてビットラインBLを各々選択または非選択することができる。列デコーダ1130は、電圧生成器及び制御ロジック1160から提供される電圧をビットラインに各々供給することができる。
【0036】
例示的に、列デコーダ1130は、データラインDLを介してデータを受信し、受信されたデータを格納することができる。列デコーダ1130は、格納されたデータに基づいて、ビットラインBLを各々選択または非選択することができる。列デコーダ1130は、ビットラインBLの電圧または電流を感知し、感知結果を格納することができる。感知結果は、メモリセルアレイ1110から読み出されたデータとすることができる。読み出されたデータは、データラインDLを介して出力することができる。
【0037】
アドレスデコーダ1140は、電圧生成器及び制御ロジック1160の制御によって動作する。アドレスデコーダ1140は、コントローラ1200からアドレスADDRを受信し、受信されたアドレスを格納することができる。アドレスデコーダ1140は、格納されたアドレスのうち行アドレスをデコーディングし、デコーディングされた行アドレスDRAを行デコーダ1120に伝送することができる。アドレスデコーダ1140は、格納されたアドレスのうち列アドレスをデコーディングし、デコーディングされた列アドレスDCAを列デコーダ1130に伝送することができる。
【0038】
データ入出力回路1150は、電圧生成器及び制御ロジック1160の制御によって動作する。データ入出力回路1150は、コントローラ1200から伝送されるデータを格納し、格納されたデータをデータラインDLに出力することができる。データ入出力回路1150は、データラインDLを介して伝送されるデータを格納し、格納されたデータをコントローラ1200に出力することができる。
【0039】
電圧生成器及び制御ロジック1160は、コントローラ1200から制御信号CTRL及びコマンドCMDを受信するように構成される。電圧生成器及び制御ロジック1160は、受信された制御信号CTRL及びコマンドCMDに応答して、不揮発性メモリ1100のすべての動作を制御するように構成される。例えば、電圧生成器及び制御ロジック1160は不揮発性メモリ1100の構成要素に電圧を供給し、これらの動作タイミングを制御することができる。
【0040】
図3A〜
図3Cは、本発明の実施形態に係るメモリセルアレイを示す回路図である。
図3Aを参照すると、メモリセルアレイ1110aは、ワードラインWl1〜WLnとビットラインBL1〜BLmとに接続されたメモリセルMCを含んでいる。メモリセルMCの各々は、一つの可変抵抗素子を含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて変わる抵抗値を有することができる。メモリセルMCは、ワードラインWl1〜WLnとビットラインBL1〜BLmの電圧に応じて選択または非選択することができる。
【0041】
図3Bを参照すると、メモリセルアレイ1110bは、ワードラインWl1〜WLnとビットラインBL1〜BLnに接続されたメモリセルMCを含んでいる。メモリセルMCの各々は、一つの可変抵抗素子と1つのダイオードとを含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて可変する抵抗値を有することができる。ダイオードは順方向バイアス時に電流が流れ、逆方向バイアス時には電流が流れない。ダイオードは、ワードラインWl1〜WLnとビットラインBL1〜BLmの電圧に応じてメモリセルMCを選択する選択度を向上させることができる。
例示的に、不揮発性メモリ1100のプログラムは、読み出し、及び消去スキームによって、ダイオードの位置と方向は変更可能である。
【0042】
図3Cを参照すると、メモリセルアレイ1110cは、ワードラインWl1〜WLn、ソースラインSL1〜SLn、ビットラインBL1〜BLmに接続されたメモリセルMCを含んでいる。メモリセルMCの各々は、一つの可変抵抗素子と1つのトランジスタとを含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて変わる抵抗値を有することができる。トランジスタは、ワードラインWL1〜WLnの電圧によってターンオンまたはターンオフすることができる。トランジスタは、メモリセルMCを選択する選択度を向上させることができる。
例示的に、不揮発性メモリ1100のプログラム、読み出し、消去スキームによって、トランジスタの位置や接続関係は変更可能である。ソースラインSL1〜SLnは、行デコーダ1120または列デコーダ1130に接続することができる。
【0043】
図4は、本発明の実施形態に係るコントローラ1200を示すブロック図である。
図1及び
図4を参照すると、コントローラ1200は、バス1210と、プロセッサ1220と、ランダムアクセスメモリ1230と、ホストインターフェース1240と、データエンコーディング及びデコーディング部1260と、メモリインターフェース1250とを含んでいる。
バス1210は、コントローラ1200の構成要素の間のチャネルを提供するよう構成される。
プロセッサ1220は、コントローラ1200の構成要素を制御するように構成される。
ランダムアクセスメモリ1230は、プロセッサ1220またはコントローラ1200の動作メモリとして使用することができる。ランダムアクセスメモリ1230は、DRAM、SRAM、FRAM、MRAM、PRAM、RRAMなどを含むことができる。
【0044】
ホストインターフェース1240は、プロセッサ1220の制御に応じてホストと通信するように構成される。ホストインターフェース1240は、USB(Universal Serial Bus)、MMC(multimedia card)、PCI(peripheral component interconnection)、PCI−E(PCI−express)、ATA(Advanced Technology Attachment)、Serial−ATA、Parallel−ATA、SCSI(small computer small interface)、ESDI(enhanced small disk interface)、IDE(Integrated Drive Electronics)、ファイヤワイヤ(Firewire)のうちの少なくとも一つの通信規格によってホストと通信するように構成することができる。
メモリインターフェース1250は不揮発性メモリ1100と通信するように構成される。
【0045】
データエンコーディング及びデコーディング部1260は、データエンコーディング及びデコーディングを実行するように構成される。例えば、データエンコーディング及びデコーディング部1260は、ホストからホストインターフェース1240を介して受信され、ランダムアクセスメモリ1230に格納されたデータをエンコーディングすることができる。エンコーディングされたデータは、ランダムアクセスメモリ1230に格納された後、メモリインターフェース1250を介して不揮発性メモリ1100に伝送することができる。データエンコーディング及びデコーディング部1260は不揮発性メモリ1100からメモリインターフェース1250を介して受信され、ランダムアクセスメモリ1230に格納されたデータをデコーディングすることができる。デコーディングされたデータは、ランダムアクセスメモリ1230に格納された後、ホストインターフェース1240を介してホストに伝送することができる。
【0046】
データエンコーディング及びデコーディング部1260は不揮発性メモリ1100のメモリセルのデータの変化が減少するようにデータをエンコーディングすることができる。データエンコーディング及びデコーディング部1260は、エンコーディングに対する情報を生成することができる。生成された情報は、エンコーディングされたデータと共に不揮発性メモリ1100に伝送することができる。不揮発性メモリ1100からデータと共にエンコーディングに対する情報を受信することができる。データエンコーディング及びデコーディング部1260は、受信された情報に基づいて、受信されたデータをデコーディングすることができる。
【0047】
以下、データエンコーディング及びデコーディング部1260が生成するエンコーディングに対する情報をフラグデータ(flag data)という。
例示的に、データエンコーディング及びデコーディング部1260は、プロセッサ1220と分離した別途の構成要素として示されている。しかし、データエンコーディング及びデコーディング部1260は、プロセッサ1220の構成要素として実現することができる。データエンコーディング及びデコーディング部1260は、プロセッサ1220で駆動されるソフトウェアとして実現することができる。本発明の技術的思想から逸脱せず、データエンコーディング及びデコーディング部1260は、コントローラ1200内で様々な形態で実現可能である。
【0048】
図5は、本発明の第1実施形態に係るプログラム方法を示すフローチャートである。
図1、
図4、
図5を参照すると、S110段階において、ホストからプログラムデータが受信される。コントローラ1200は、ホストからホストインターフェース1240を介してプログラムデータを受信し、これをランダムアクセスメモリ1230に格納することができる。
【0049】
S120段階において、不揮発性メモリ1100から受信されたプログラムデータに対応するデータが読み出される。例えば、コントローラ1200は、受信されたプログラムデータがプログラムされる不揮発性メモリ1100の格納領域からデータを読み出すことができる。コントローラ1200は、プログラムデータと共に受信されるアドレスを用いて、読み出しを実行するように不揮発性メモリ1100を制御することができる。読み出されたデータは、メモリインターフェース1250を介して受信され、ランダムアクセスメモリ1230に格納することができる。
【0050】
S130段階において、プログラムデータ及び読み出されたデータに基づいて、プログラムデータがエンコーディングされ、エンコーディング情報を含むフラグデータが生成される。データエンコーディング及びデコーディング部1260は、ランダムアクセスメモリ1230に格納されたプログラムデータと読み出されたデータとを比較することができる。比較の結果によって、データエンコーディング及びデコーディング部1260は、ランダムアクセスメモリ1230に格納されたプログラムデータをエンコーディングすることができる。データエンコーディング及びデコーディング部1260はエンコーディングを実行して、少なくとも一つの候補データを生成し、生成された候補データとプログラムデータとを比較することができる。データエンコーディング及びデコーディング部1260は、候補データ及びプログラムデータのうちの一つをエンコーディングされたデータとして選択することができる。
【0051】
エンコーディングされたデータは、ランダムアクセスメモリ1230に格納することができる。データエンコーディング及びデコーディング部1260は、プログラムデータをエンコーディングされたデータとして選択する場合、エンコーディングされたデータがランダムアクセスメモリ1230に格納される動作は省略可能である。
エンコーディングされたデータが選択されれば、データエンコーディング及びデコーディング部1260はエンコーディング情報を含むフラグデータを生成することができる。フラグデータは、候補データ及びプログラムデータのうちのいずれかデータがエンコーディングされたデータとして選択されたかに対する情報を含むことができる。フラグデータは、ランダムアクセスメモリ1230に格納することができる。
【0052】
S140段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ1100にプログラムされる。ランダムアクセスメモリ1230に格納されたエンコーディングされたデータ及びフラグデータは、メモリインターフェース1250を介して不揮発性メモリ1100に伝送することができる。不揮発性メモリ1100は、コントローラ1200の制御によって、受信されたデータを読み出されたデータが格納された格納領域にプログラムすることができる。
【0053】
図6Aは、本発明の第1実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。
図6Aを参照すると、S210段階において、プログラムデータが候補データとして選択される。
S220段階において、読み出されたデータを候補データと比較する。例えば、読み出されたデータと候補データとの間の距離を比較することができる。距離は読み出されたデータと、読み出されたデータと比較されるデータとの間で互いに異なる値を有するビットの数であり得る。
【0054】
S230段階において、距離が基準値未満であるか否かを判断する。例えば、読み出されたデータと候補データとの間の距離が基準値未満であるか否かを判断する。距離が基準値未満であれば、S240段階において、比較された候補データがエンコーディングされたデータとして選択され、S280段階が実行される。距離が基準値未満でなければ、S250段階が実行される。
【0055】
S250段階において、最大ループに到達したか否かを判別する。最大ループ数は、データエンコーディング及びデコーディング部1260に設定することができる。最大ループ数は、コントローラ1200に予め格納することができる。最大ループ数は、コントローラ1200のモードレジスタを通じて設定することができる。
最大ループに到達しない場合、S260段階で、以前の候補データを1ビットシフトして、新しい候補データを生成する。その後、S220段階が再び実行される。
最大ループに到達した場合は、S270段階で、読み出されたデータと最短距離を有するデータがエンコーディングされたデータとして選択される。
【0056】
S280段階において、選択されたデータを示すフラグデータが生成される。例えば、フラグデータは、候補データ及びプログラムデータのうちエンコーディングされたデータとして選択されたデータに対する情報を含むことができる。例えば、フラグデータは、選択されたデータがプログラムデータからシフトされたビット数に対する情報を含むことができる。
【0057】
図6Bは、
図6Aのエンコーディング方法の応用例を示すフローチャートである。
図6Bを参照すると、S260段階において、読み出されたデータとプログラムデータとの間の距離を計算する。
S270段階において、プログラムデータと読み出されたデータとの間の距離を基準値と比較する。プログラムデータと読み出されたデータとの間の距離が基準値より大きくなければ、S280段階において、プログラムデータがエンコーディングされたデータとして選択される。プログラムデータと読み出されたデータとの間の距離が基準値より大きければ、S290段階において、
図6Aを参照して説明したエンコーディング方法が実行される。
すなわち、
図6Aのエンコーディング方法は、プログラムデータと読み出されたデータとの間の距離が基準値より大きい場合に実行することができる。
【0058】
図7Aは、
図6のエンコーディング方法を適用した例を示す。例示的に、最大ループが3の例を
図7Aに示す。
図7Aから、差(difference)は、読み出されたデータとプログラムデータと候補データとの間の差を示す。例えば、特定の位置の読み出されたデータのビットとプログラムデータ又は候補データのビットが同一のビットである場合、該当位置の差ビットは‘0’とすることができる。特定の位置の読み出されたデータのビットとプログラムデータ又は候補データのビットが互いに異なるビットである場合、該当位置の差ビットは‘1’とすることができる。
【0059】
図1及び
図7Aを参照すると、プログラムデータが1ビットシフトされて、第1候補データが生成される。例えば、プログラムデータは左側にシフトすることができる。プログラムデータが2ビットシフトされて(または、第1候補データが1ビットシフトされて)第2候補データが生成される。プログラムデータが3ビットシフトされて(または、第2候補データが1ビットシフトされて)、第3候補データが生成される。
【0060】
プログラムデータと読み出されたデータとの間の距離は6である。プログラムデータがエンコーディングされたデータとして選択されたことを示すフラグデータは‘00’とすることができる。第1候補データと読み出されたデータとの間の距離は6である。第1候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘01’とすることができる。第2候補データと読み出されたデータとの間の距離は4である。第2候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘10’とすることができる。第3候補データと読み出されたデータとの間の距離は4である。第3候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘11’とすることができる。
【0061】
読み出されたデータと最短距離を有するデータ、すなわち第2及び第3候補データのうちの一つがエンコーディングされたデータとして選択され得る。第2候補データが選択されれば、フラグデータは‘10’に生成することができる。第3候補データが選択されれば、フラグデータは‘11’に生成することができる。
第2または第3候補データと読み出されたデータとの間の距離は、プログラムデータと読み出されたデータとの間の距離より小さい。プログラムデータが不揮発性メモリ1100にプログラムされる時、6ビットが変わるようになる。すなわち、6つのメモリセルのデータを変換することができる。一方、第2または第3候補データが不揮発性メモリ1100にプログラムされる時、4ビットが変わるようになる。すなわち、4つのメモリセルのデータを変換することができる。
【0062】
データが変換するメモリセルの数が減少すると、プログラム時の消費電力が低減するようになる。したがって、本発明の実施形態によれば、メモリシステム1000の消費電力が減少するようになる。消費電力が減少するようになれば、メモリシステム1000が支援する電源容量を減少させることができる。したがって、メモリシステム1000のサイズと複雑さを減少させることができる。
【0063】
図7Bは、
図6のエンコーディング方法を適用した他の例を示す。例示的に、最大ループが3の例を
図7Bに示す。
図7Aと比較すると、読み出されたデータ、プログラムデータ、そして第1〜第3候補データはバイト単位で比較され、シフトされる。すなわち、本発明の実施形態に係るエンコーディング方式は、ビット単位だけではなく、バイト単位でも実行可能である。
【0064】
図7Cは、2ビットのフラグデータを用いて、
図6のエンコーディング方法を適用したシミュレーション結果を示す。
図7Dは、4ビットのフラグデータを用いて、
図6のエンコーディング方法を適用したシミュレーション結果を示す。例示的に、
図7C及び
図7Dは、ランダムデータパターンに基づいたシミュレーション結果を示す。
図1、
図7C及び
図7Dを参照すると、循環シフトエンコーディングが実行されるプログラムデータの長さ(N)に応じて、プログラムデータがプログラムされる時と、エンコーディングされたデータがプログラムされる時に変更されるビットの数を各々示している。
図7Cと
図7Dに示すように、プログラムデータが不揮発性メモリ1100にプログラムされる時よりエンコーディングされたデータがプログラムされる時に、変換するビットの数が減少する。したがって、本発明の実施形態に係るエンコーディング方法(またはプログラム方法)が適用されれば、メモリシステム1000の消費電力が減少するようになる。
【0065】
図8は、本発明の第2実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。
図8に示したエンコーディング方法は、差分エンコーディングとすることができる。
図8を参照すると、S310段階において、候補データの第1ビットがプログラムデータの第1ビットと同じように生成される。例えば、プログラムデータの第1ビットが‘0’であれば、候補データの第1ビットは‘0’に生成される。プログラムデータの第1ビットが‘1’であれば、候補データの第1ビットは‘1’に生成される。
【0066】
S320段階において、プログラムデータの次のビットが選択される。
S330段階において、選択されたビットが前のビットと同一であるか否かが判別される。例えば、プログラムデータの選択されたビットが、プログラムデータの前のビットと同じビットであるか否かが判別される。プログラムデータの選択されたビットが‘1’であり、プログラムデータの前のビットが‘1’あれば、同じビットとして判別される。プログラムデータの選択されたビットが‘0’であり、プログラムデータの前のビットが‘0’であれば、同じビットとして判別される。プログラムデータの選択されたビットが‘1’であり、プログラムデータの前のビットが‘0’であれば、同一ではないビットとして判別される。プログラムデータの選択されたビットが‘0’であり、プログラムデータの前のビットが‘1’であれば、同一ではないビットとして判別される。
【0067】
選択されたビットが同じビットとして判別されれば、S341段階において、候補データのビットがロジックロー(例えば、‘0’)に生成される。選択されたビットが同一ではないビットとして判別されれば、S343段階において、候補データのビットがロジックハイ(例えば、‘1’)として選択される。例えば、プログラムデータの選択されたビットの位置と同じ位置に存在する候補データのビットが生成することができる。
例示的に、選択されたビットが同じビットとして判断されれば、候補データのビットがロジックハイ(例えば、‘1’)に生成され、選択されたビットが同一ではないビットとして判断されれば、候補データのビットがロジックロー(例は、‘0’)として選択される。
【0068】
S350段階において、選択されたビットが最後のビットであるか否かが判断される。例えば、プログラムデータの選択されたビットが、プログラムデータの最後のビットであるか否かを判別することができる。選択されたビットが最後のビットではなければ、S320の段階を再び実行する。
選択されたビットが最後のビットであれば、S360段階〜S380段階において、エンコーディングされたデータが選択され、フラグデータが生成される。S360段階〜S380の段階は、
図6のS230段階〜S250段階と同じ方法で実行される。したがって、S360段階〜S380段階の詳細な説明は省略する。
【0069】
図9は、
図8のエンコーディング方法を適用した例を示す。
図9を参照すると、プログラムデータの第1ビットが‘1’であるため、候補データの第1ビットは‘1’に生成される。プログラムデータの第2ビットは‘0’であり、第1ビットと同一ではない。したがって、候補データの第2ビットは‘1’に生成される。同様に、プログラムデータの連続する2つのビットが比較され、比較の結果によって候補データが生成される。
【0070】
プログラムデータがエンコーディングされたデータとして選択したことを示すフラグデータは‘0’になることができる。候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘1’になることができる。
プログラムデータと読み出されたデータとの間の距離は6である。候補データと読み出したデータとの間の距離は1である。したがって、候補データが選択され、フラグデータが‘1’に生成される。
【0071】
図10は、本発明の第3実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。
図10に示したエンコーディング方法は、バイナリマスクエンコーディングである。
図1及び
図10を参照すると、S410段階において、予め設定されたデータが備えられる。予め設定されたデータは、コントローラ1200に予め格納することができる。予め設定されたデータは、コントローラ1000のモードレジスタを通じて設定することができる。コントローラ1200は、複数のデータを予め格納し、予め格納された複数のデータのうちの一つを予め設定されたデータとして選択することができる。予め設定されたデータの長さは、プログラムデータの長さと同一であり得る。
【0072】
S420段階において、プログラムデータと予め設定されたデータの論理演算を実行して、候補データを生成する。例えば、プログラムデータの予め設定されたデータの排他的論理積を実行し、排他的論理積の実行結果を候補データとして生成することができる。
S430段階〜S450段階において、エンコーディングされたデータが選択され、フラグデータが生成する。S430段階〜S450の段階は、
図6のS230段階〜S250段階と同様の方法で実行される。したがって、S430段階〜S450段階の詳細な説明は省略する。
【0073】
図11は、
図10のエンコーディング方法を適用した例を示す。
図11を参照すると、プログラムデータと予め設定されたデータの排他的論理積の結果が候補データとして生成される。プログラムデータがエンコーディングされたデータとして選択したことを示すフラグデータは‘0’とすることができる。候補データがエンコーディングされたデータを選択したことを示すフラグデータは‘1’とすることができる。
プログラムデータと読み出されたデータとの間の距離は6である。候補データと読み出されたデータとの間の距離は4である。したがって、候補データがエンコーディングされたデータとして選択され、フラグデータが‘1’に生成される。
例示的に、予め設定されたデータは、複数のデータセットのうちで選択することができる。このとき、フラグデータは複数のデータセットのうち、いずれのデータが予め設定されたデータとして選択されたかに対する情報をさらに含むことができる。
【0074】
図12は、本発明の第4実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。
図12に示したエンコーディング方法は、ビット反転エンコーディングである。
図12を参照すると、S510段階において、プログラムデータを反転して候補データが生成される。
S520段階〜S540段階において、エンコーディングされたデータが選択され、フラグデータが生成される。S520段階〜S540の段階は、
図6のS230段階〜S250段階と同じ方法で実行される。したがって、S520段階〜S540段階の詳細な説明は省略する。
【0075】
図13Aは、
図12のエンコーディング方法を適用した第1例を示す。
図13Aを参照すると、プログラムデータを反転して候補データが生成される。プログラムデータがエンコーディングされたデータとして選択されたことを示すフラグデータは‘0’とすることができる。候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘1’とすることができる。
プログラムデータと読み出されたデータとの間の距離は6である。候補データと読み出されたデータとの間の距離は2である。したがって、候補データがエンコーディングされたデータとして選択され、フラグデータが‘1’に生成される。
【0076】
図13Bは、
図12のエンコーディング方法の変形例を示す。例示的に、プログラムデータが複数の部分に分割され、分割された部分の各々が選択的に反転する例を
図13Bに示した。例示的に、プログラムデータは、8ビットであり、プログラムデータは二つの部分に分けることができる。
プログラムデータの1番目の部分が反転して第1候補データを生成することができる。プログラムデータの2番目の部分が反転して第2候補データを生成することができる。プログラムデータの1番目と2番目の部分が反転して第3候補データを生成することができる。
【0077】
プログラムデータが選択されたこと示すフラグデータは‘00’とすることができる。第1候補データが選択されたこと示すフラグデータは‘01’とすることができる。第2候補データが選択されたこと示すフラグデータは‘10’とすることができる。第3候補データが選択されたこと示すフラグデータは‘11’とすることができる。
プログラムデータと読み出されたデータとの間の距離は6である。第1候補データと読み出されたデータとの間の距離は6である。第2候補データと読み出されたデータとの間の距離は2である。第3候補データと読み出されたデータとの間の距離は2である。したがって、第2及び第3候補データのうちの一つがエンコーディングされたデータとして選択され、フラグデータは、‘10’又は‘11’に生成することができる。
【0078】
図14は、本発明の第2実施形態に係るプログラム方法を示すフローチャートである。
図1及び
図14を参照すると、S610段階において、プログラムデータが受信され、S620段階において、プログラムデータに対応するデータが読み出される。S610段階とS620段階は、
図5のS110段階とS120段階と同じ方法で実行することができる。
S630段階において、複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択され、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされ、エンコーディング情報を含むフラグデータが生成される。
【0079】
S640段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ1100にプログラムされる。
例示的に、複数のエンコーディングスキームは、データエンコーディング及びデコーディング部1260に格納され、エンコーディングスキームの選択は、データエンコーディング及びデコーディング部1260によって行うことができる。
【0080】
図15は、本発明の第1実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。
図15を参照すると、S710段階において、複数のエンコーディングスキームの候補データと読み出されたデータとの間の距離が予測される。距離の予測は距離に影響を及ぼす要素(以下、距離の要素という)を計算することによって行うことができる。距離の予測は、直接的に予想距離を計算する動作を含むことができる。距離の予測は、距離の要素を計算する動作を含み得る。距離の予測は、本発明の技術的思想を表現する一例であり、本発明の技術的思想は、直接距離を予測するものに限定されない。
【0081】
S720段階において、予測の結果に基づいて、複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択される。例えば、読み出されたデータと最短距離を有する候補データとを生成することによって予測されるエンコーディングスキームを選択することができる。
S730段階において、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされる。
S740段階において、選択情報及びエンコーディング情報を含むフラグデータが生成される。選択情報は、複数のエンコーディングスキームのうちのいずれのエンコーディングスキームが選択されたかに対する情報を含むことができる。
【0082】
図16は、候補データの読み出されたデータからの距離を予測し、予測の結果に基づいてエンコーディングスキームを選択する一例を示すフローチャートである。
図1及び
図16を参照すると、S711段階において、読み出されたデータとプログラムデータとの間の変換ビット及び同じビットがカウントされる。変換ビットは、読み出されたデータ及びプログラムデータの同じ位置のビットが互いに異なるビットを示す。同じビットは、読み出されたデータ及びプログラムデータの同じ位置のビットが同じビットを示す。この段階は、候補データの読み出されたデータからの距離を予測する動作(
図15のS710段階)に対応することができる。
【0083】
例示的に、読み出されたデータとプログラムデータに基づいて計算された変換ビット及び同じビットの差が閾値より小さい場合、循環シフトエンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離がビット反転エンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離より小さいと予測することができる。変換ビット及び同じビットの差が閾値より小さくなければ、循環シフトエンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離がビット反転エンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離より大きいと予測することができる。
【0084】
S721段階において、変換ビット数と同じビット数の差が閾値より小さいか否かが判別される。差が閾値より小さければ、S723段階において、循環シフトエンコーディングスキームを選択することができる。差が閾値より小さくなければ、S725段階において、ビット反転エンコーディングスキームを選択することができる。
閾値は、コントローラ1200に予め格納された値であり得る。閾値は、コントローラ1200のモードレジスタを通じて設定される値であり得る。閾値は、プログラムデータの全体の長さの半分として設定することができる。
S721段階〜S725段階は、予測の結果によってエンコーディングスキームを選択する動作(
図15のS720段階)に対応することができる。
【0085】
例示的に、循環シフトエンコーディングスキームとビット反転エンコーディングスキームとを含むデータエンコーディング及びデコーディング部1260が、変換ビット及び同じビットの数を利用してエンコーディングスキームを選択する例が説明された。しかし、候補データの読み出されたデータからの距離を予測し、予測の結果によってエンコーディングスキームを選択する方法は、
図16を参照して説明した例に限定されない。
【0086】
データエンコーディング及びデコーディング部1260は、循環シフトエンコーディングスキーム、差分エンコーディングスキーム、バイナリマスクエンコーディングスキーム、ビット反転エンコーディングスキームなどを含む様々なエンコーディングスキームのうちで、少なくとも二つのエンコーディングスキームを含むことができる。データエンコーディング及びデコーディング部1260は、変換ビット及び同じビットの数、プログラムデータのビットが遷移する回数、プログラムデータと読み出されたデータの相互相関図、バイナリマスクエンコーディングのための予め設定されたデータとプログラムデータの相互相関図、プログラムデータの‘1’又は‘0’の数などを含む様々な距離の要素の計算結果によってエンコーディングスキームを選択することができる。
【0087】
図17は、本発明の第2実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。
図17を参照すると、S810段階及びS820段階において、予測の結果によって複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択される。S810段階とS820の段階は、
図15のS710段階及びS720段階と同じ方法で実行することができる。
【0088】
S830段階において、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされる。
S840段階において、エンコーディングされたデータと読み出されたデータとの間の距離が閾値より小さいか否かが判別される。エンコーディングされたデータと読み出されたデータとの間の距離が閾値より大きい場合は、S850段階において、複数のエンコーディングスキームのうち、次のエンコーディングスキームが選択される。例えば、選択されたエンコーディングスキームの次に近い距離を有する候補データを生成すると予測されるエンコーディングスキームを選択することができる。その後、S830の段階が再び実行される。
【0089】
エンコーディングされたデータと読み出されたデータとの間の距離が閾値より小さければ、S860段階において、選択情報及びエンコーディング情報を含むフラグ情報が生成される。
すなわち、予測の結果によってエンコーディングスキームが選択されても、選択されたエンコーディングスキームのエンコーディング結果が特定の条件(例えば、閾値)を満足しなければ、他のエンコーディングスキームを選択することができる。
例示的に、閾値は、プログラムのデータと読み出されたデータとの間の距離に対する割合として設定することができる。閾値は、プログラムデータの全体のビットの数に対する割合として設定することができる。
【0090】
図18は、本発明の一実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。
図18を参照すると、S910段階において、複数のエンコーディングスキームのうちで、一番目のエンコーディングスキームが選択される。
S920段階において、選択されたエンコーディングスキームを用いて、プログラムデータをエンコーディングして、候補データが生成される。
【0091】
S930段階において、距離が基準値未満であるか否かが判断される。例えば、読み出されたデータと候補データとの間の距離が基準値未満であるか否かが判断される。距離が基準値未満であれば、S940段階において、比較された候補データがエンコーディングされたデータとして選択され、S980段階が実行される。距離が基準値未満でなければ、S950段階が実行される。
S930段階において、選択されたエンコーディングスキームが最後のエンコーディングスキームであるか否かが判断される。選択されたエンコーディングスキームが最後のエンコーディングスキームでなければ、S960段階において、複数のエンコーディングスキームのうち、次のエンコーディングスキームが選択され、S920の段階が再び実行される。選択されたエンコーディングスキームが最後のエンコーディングスキームであれば、S970段階が実行される。
【0092】
S970段階において、読み出されたデータと最短距離を有するデータがエンコーディングされたデータとして選択される。
S980段階において、選択情報及びエンコーディング情報を含むフラグデータが生成される。
すなわち、複数のエンコーディングスキームを利用してプログラムデータが順にエンコーディングされ、エンコーディング結果のうち最短距離を有するデータがエンコーディングされたデータとして選択される。
【0093】
図19は、本発明の一実施形態に係るプログラム方法を示すフローチャートである。
図1及び
図19を参照すると、S1010段階において、プログラムデータが受信され、S1020段階において、プログラムデータに対応するデータが不揮発性メモリ1100から読み出される。S1010段階及びS1020段階は、
図5のS110段階とS120段階と同じ方法で実行することができる。
S1030段階において、複数のエンコーディングスキームのうち二つ以上のエンコーディングスキームが選択され、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされ、そしてエンコーディング情報及び選択情報を含むフラグデータが生成される。
【0094】
例示的に、ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームを選択することができる。この時、プログラムデータは、まず、ビット反転エンコーディングスキームによって1次エンコーディングすることができる。その後、1次エンコーディングされたデータは、循環シフトエンコーディングスキームによって二次エンコーディングすることができる。ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームの例をあげて実施形態を説明した。しかし、この実施形態は、ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームに限定されない。
S1040段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ1100にプログラムされる。
【0095】
例示的に、データエンコーディング及びデコーディング部1260は、二つ以上のエンコーディングスキーム及びこれらの組み合わせを選択することができる。
図15〜
図17を参照して説明したように、データエンコーディング及びデコーディング部1260は、予測の結果(または距離の要素の計算結果)によってエンコーディングスキームを選択することができる。
図18を参照して説明したように、データエンコーディング及びデコーディング部1260は、複数のエンコーディングスキームを順に選択及び組み合わせてエンコーディングを行い、エンコーディング結果によってエンコーディングされたデータを選択することができる。
【0096】
例示的に、データエンコーディング及びデコーディング部1260が、循環シフトエンコーディングスキーム及びビット反転エンコーディングスキームを選択する時、プログラムデータ、ビット反転エンコーディングされたデータ、1ビット循環シフトエンコーディングされたデータ、2ビット循環シフトエンコーディングされたデータ、3ビット循環シフトエンコーディングされたデータ、1ビット循環シフト及びビット反転エンコーディングされたデータ、2ビット循環シフト及びビット反転エンコーディングされたデータ、3ビット循環シフト及びビット反転エンコーディングされたデータのうちの一つをエンコーディングされたデータとして選択ことができる。
【0097】
図20は、データエンコーディング及びデコーディング部1260がプログラムデータを分割してエンコーディングする例を示す。
図20を参照すると、データエンコーディング及びデコーディング部1260は、プログラムデータを複数の部分に分割してエンコーディングすることができる。
【0098】
例えば、データエンコーディング及びデコーディング部1260は、プログラムデータの部分の各々に対して同じエンコーディングスキームを適用することができる。プログラムデータの部分の各々に対して、循環シフトエンコーディングスキーム、差分エンコーディングスキーム、バイナリマスクエンコーディングスキーム、ビット反転エンコーディングスキームのうちの一つのエンコーディングスキームを適用することができる。フラグデータは、選択されたエンコーディングスキームに対する情報を含むことができる。
【0099】
例えば、データエンコーディング及びデコーディング部1260は、プログラムデータの部分の各々に対して独立してエンコーディングスキームを適用することができる。プログラムデータの第1部分は、1ビット循環シフトエンコーディングされ、第2部分は、3ビット循環シフトエンコーディングされ、第3部分は、元のデータに保持され、第4部分は、ビット反転エンコーディングされ得る。フラグデータは、プログラムデータの各部分に適用されたエンコーディングスキームに対する情報を含むことができる。
プログラムデータが分割されてエンコーディングされれば、エンコーディングされたデータと読み出されたデータとの間の距離を減少させることができる。
【0100】
図21は、本発明の第2実施形態に係るメモリシステム2000を示すブロック図である。
図21を参照すると、メモリシステム2000は不揮発性メモリ2100とコントローラ2200とを含んでいる。
不揮発性メモリ2100は、複数の不揮発性メモリチップを含んでいる。複数の不揮発性メモリチップは、複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャネルを通じてコントローラ2200と通信するように構成される。例示的に、複数の不揮発性メモリチップは、第1から第kチャンネルCH1〜CHkを通じてコントローラ2200と通信することを示している。
コントローラ2200は、データエンコーディング及びデコーディング部2260を含んでいる。データエンコーディング及びデコーディング部2260は、
図5〜
図20を参照して説明したエンコーディング及びフラグデータの生成を行うことができる。
【0101】
図22は、本発明の実施形態に係るコンピューティングシステム3000を示すブロック図である。
図22を参照すると、コンピューティングシステム3000は、バス3100と、プロセッサ3200と、メモリシステム3300と、モデム3400と、ユーザインターフェース3500とを含んでいる。
バス3100は、コンピューティングシステム3000の構成要素の間にチャンネルを提供する。
プロセッサ3200は、コンピューティングシステム3000のすべての動作を制御し、論理演算を実行することができる。
【0102】
メモリシステム3300は、本発明の実施形態に係るメモリシステム1000または2000を含むことができる。メモリシステム3300は、コンピューティングシステム3000の動作メモリ又はストレージに提供することができる。動作メモリは、プロセッサ3200が、コンピューティングシステム3000を制御するために使用する格納領域とすることができる。ストレージは、コンピューティングシステム3000が、データの長期的な格納のために使用する格納領域とすることができる。
【0103】
メモリシステム3300が動作メモリとして提供される時、コンピューティングシステム3000は、別々のストレージをさらに含むことができる。メモリシステム3300がストレージとして提供される時、コンピューティングシステム3000は、別々の動作メモリをさらに含むことができる。
モデム3400は、外部と有線または無線通信を行うことができる。
【0104】
ユーザインターフェース3500は、カメラ、キーボード、マウス、マイク、タッチパッド、タッチパネル、ボタン、センサなどのようなユーザ入力インターフェース、ディスプレイ、スピーカ、ランプ、モータなどのようなユーザ出力インターフェースを含むことができる。
コンピューティングシステム3000は、スマートフォン、スマートパッドなどのようなモバイルマルチメディア装置、又はスマートテレビ、スマートモニタ、コンピュータ、ノートパソコンなどのようなマルチメディア装置を形成することができる。
【0105】
本発明の詳細な説明では具体的な実施形態について説明したが、本発明の範囲と技術的思想から逸脱しない範囲内で様々な変形が可能である。したがって、本発明の範囲は、上述の実施形態に限定されず、後述の特許請求の範囲だけではなく、この発明の特許請求の範囲と均等なものにより決められなければならない。