JP2014086127A - 不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法 - Google Patents

不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法 Download PDF

Info

Publication number
JP2014086127A
JP2014086127A JP2013220131A JP2013220131A JP2014086127A JP 2014086127 A JP2014086127 A JP 2014086127A JP 2013220131 A JP2013220131 A JP 2013220131A JP 2013220131 A JP2013220131 A JP 2013220131A JP 2014086127 A JP2014086127 A JP 2014086127A
Authority
JP
Japan
Prior art keywords
data
encoding
program
memory
candidate
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013220131A
Other languages
English (en)
Other versions
JP6209051B2 (ja
Inventor
Young Geon Yoo
永 健 劉
Jun-Jin Kong
駿 鎮 孔
Chang Kyu Seol
昶 圭 薛
Hong-Rak Son
弘 楽 孫
Hyunseuk Yoo
▲ケン▼ 碩 劉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2014086127A publication Critical patent/JP2014086127A/ja
Application granted granted Critical
Publication of JP6209051B2 publication Critical patent/JP6209051B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1659Cell access
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Semiconductor Memories (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】消費電力の減少した不揮発性メモリ及びコントローラを含むメモリシステム、そしてプログラム方法を提供する。
【解決手段】本発明のプログラム方法は、プログラムデータを受信する段階と、メモリセルに格納されたデータを読み出す段階と、プログラムデータ及び読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いてプログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階と、エンコーディングされたデータ及びフラグデータをメモリセルにプログラムする段階で構成される。
【選択図】 図14

Description

本発明は、半導体メモリに係り、より詳細には、不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法に関する。
半導体メモリ装置(semiconductor memory device)は、シリコン(Si、silicon)、ゲルマニウム(Ge、Germanium)、ガリウムヒ素(GaAs、gallium arsenide)、インジウム燐(InP、indium phosphide)などのような半導体を用いて実現される記憶装置である。半導体メモリ装置は、大きく揮発性メモリ装置(Volatile memory device)と不揮発性メモリ装置(Nonvolatile memory device)とに区分される。
揮発性メモリ装置は、電源の供給が遮断されれば、格納していたデータが消滅するメモリ装置である。揮発性メモリ装置は、SRAM(Static RAM)、DRAM(Dynamic RAM)、SDRAM(Synchronous DRAM)などがある。不揮発性メモリ装置は、電源の供給が遮断されても格納していたデータを保持するメモリ装置である。不揮発性メモリ装置は、ROM(Read Only Memory)、PROM(Programmable ROM)、EPROM(Electrically Programmable ROM)、EEPROM(Electrically Erasable and Programmable ROM)、フラッシュメモリ装置、PRAM(Phase−change RAM)、MRAM(Magnetic RAM)、RRAM(登録商標)(Resistive RAM)、FRAM(登録商標)(Ferroelectric RAM)などがある。
米国特許第7920413号公報 米国特許第6862235号公報 韓国特許出願公開2009−0034572号公報
本発明の目的は、消費電力の減少した不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法を提供することにある。
メモリにデータをプログラムする本発明の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
実施形態として、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階と、前記予測の結果によって前記複数のエンコーディングスキームのうちの少なくとも一つのエンコーディングスキームを選択する段階とを含む。
実施形態として、前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階は、前記読み出されたデータとプログラムデータとの間の同一のビット及び変換ビットを各々カウントする段階を含む。
実施形態として、前記複数のエンコーディングスキームは、循環シフトエンコーディングスキームと反転エンコーディングスキームとを含み、前記予測の結果によって、少なくとも一つのエンコーディングスキームを選択する段階と、前記プログラムデータをエンコーディングする段階とは、前記変換ビットの数と同一のビットの数の差が閾値より小さい場合、前記循環シフトエンコーディングスキームを選択して、プログラムデータをシフトし、前記差が前記閾値以上の場合、前記反転エンコーディングスキームを選択して、前記プログラムデータを反転する段階を含む。
実施形態として、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が閾値より小さい場合、前記エンコーディング情報を含むフラグデータを生成し、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が前記閾値以上の場合、前記予測の結果によって前記複数のエンコーディングスキームのうち、他のエンコーディングスキームを選択し、前記選択された他のエンコーディングスキームを用いて前記プログラムデータをエンコーディングし、前記フラグデータを生成する段階をさらに含む。
実施形態として、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、前記複数のエンコーディングスキームを順に選択し、選択されたエンコーディングスキームを用いて、前記プログラムデータをエンコーディングして候補データを生成する段階と、前記プログラムデータ及び候補データを前記読み出されたデータと各々比較する段階と、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択する段階と、前記エンコーディング情報を含むフラグデータを生成する段階とを含む。
実施形態として、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、複数のエンコーディングスキームを選択し、前記選択された複数のエンコーディングスキームを組み合わせて、前記プログラムデータをエンコーディングし、前記エンコーディング情報を含むフラグデータを生成する段階を含む。
実施形態として、前記エンコーディング情報は、前記プログラムデータ及び前記少なくとも一つのエンコーディングスキームによって生成される候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータを循環シフトして候補データを生成する循環シフトエンコーディングスキームを含み、前記フラグデータは、前記エンコーディングされたデータが、前記プログラムデータから循環シフトされたビット数に対する情報を含む。
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する差分エンコーディングスキームを含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として、前記複数のエンコーディングスキームは、予め設定されたデータと前記プログラムデータの論理演算を実行して、候補データを生成するバイナリマスクエンコーディングスキームを含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータを反転して候補データを生成するビット反転エンコーディングスキームを含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として、前記プログラムデータは、複数のサブデータに分割され、前記複数のサブデータの各々について、前記少なくとも一つのエンコーディングスキームが選択される。
メモリにデータをプログラムする本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、前記プログラムデータ及び読み出されたデータを複数のプログラムデータのグループと複数の読み出されたデータのグループに各々分割する段階と、前記複数のプログラムデータのグループの各々に対して、前記複数の読み出されたデータのグループのうち対応するグループに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いてエンコーディングを実行し、エンコーディング結果を組み合わせて、エンコーディングされたデータを生成する段階と、各プログラムデータのグループのエンコーディング情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
メモリにデータをプログラムする本発明の別の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記プログラムデータを候補データとして選択する段階と、前記候補データと前記読み出されたデータとを比較する段階と、前記比較の結果によって、前記候補データと前記読み出されたデータとの間の距離が基準値未満であれば、前記候補データをエンコーディングされたデータとして選択し、前記候補データと前記読み出されたデータとの間の距離が前記基準値以上であれば、前記候補データを循環シフトして、他の候補データを生成して前記比較する段階と、前記比較の結果によってエンコーディングされたデータを選択するか、又は他の候補データを選択する段階を再び実行する段階と、前記エンコーディングされたデータが、前記プログラムデータからシフトされたビット数に対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
実施形態として、前記エンコーディングされたデータが選択されず、前記再び実行する段階が予め決められた回数だけ実行されれば、前記プログラムデータ及び前記循環シフトによって生成された候補データのうち、前記読み出されたデータと最も距離が近いデータが前記エンコーディングされたデータとして選択される。
本発明の実施形態に係るメモリシステムは、メモリと、前記メモリを制御するように構成されるコントローラとを含み、前記コントローラは、ランダムアクセスメモリと、外部からプログラムデータを受信して、前記ランダムアクセスメモリに格納するように構成されるホストインターフェースと、前記メモリから読み出されたデータを受信して、前記ランダムアクセスメモリに格納するように構成されるメモリインターフェースと、前記ランダムアクセスメモリに格納された前記読み出されたデータに基づいて、前記ランダムアクセスメモリに格納された前記プログラムデータをエンコーディングし、エンコーディングされたデータを前記ランダムアクセスメモリに格納するように構成されるデータエンコーディング部と、前記ランダムアクセスメモリに格納された前記エンコーディングされたデータを前記メモリにプログラムするように前記メモリインターフェースを制御するプロセッサとを含み、前記データエンコーディング部は、前記読み出されたデータ及び前記プログラムデータの比較結果によって前記エンコーディングされたデータを生成するようにさらに構成される。
実施形態として、前記データエンコーディング部は、複数のエンコーディングスキームのうちで少なくとも一つのエンコーディングスキームを選択し、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングするようにさらに構成される。
実施形態として、前記データエンコーディング部は、前記プログラムデータを循環シフトエンコーディングして候補データを生成し、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択するようにさらに構成される。
実施形態として、前記メモリは、磁気RAM(Magnetic Random Access Memory)又は相変化メモリ(Phasechange Random Access Memory)を含む。
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する段階と、前記プログラムデータ及び候補データのうち前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータ及び候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、予め設定されたデータと前記プログラムデータの論理演算を実行して候補データを生成する段階と、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータと候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記受信されたプログラムデータを、第1及び第2部分に分割する段階と、前記受信されたプログラムデータの第1部分を反転して、第1候補データを生成する段階と、前記受信されたプログラムデータの第2部分を反転して第2候補データを生成する段階と、前記プログラムデータと第1及び第2候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータと、第1及び第2候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータと前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
本発明の実施形態によると、プログラムデータは不揮発性メモリに格納されているデータと近い距離にあるデータにエンコーディングされてプログラムされる。プログラムの時にスイッチングされるビットの数が減少するので、不揮発性メモリの消費電力が低減するようになる。
本発明の第1実施形態に係るメモリシステムを示すブロック図。 本発明の実施形態に係る不揮発性メモリを示すブロック図。 本発明の実施形態に係るメモリセルアレイを示す回路図。 本発明の実施形態に係るメモリセルアレイを示す回路図。 本発明の実施形態に係るメモリセルアレイを示す回路図。 本発明の実施形態に係るコントローラを示すブロック図。 本発明の第1実施形態に係るプログラム方法を示すフローチャート。 本発明の第1実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。 図6Aのエンコーディング方法の応用例を示すフローチャート。 図6のエンコーディング方法を適用した例を示す図。 図6のエンコーディング方法を適用した他の例を示す図。例示的に、最大ループが3である例を示す図。 2ビットのフラグデータを用いて、図6のエンコーディング方法を適用したシミュレーション結果を示す図。 4ビットのフラグデータを用いて、図6のエンコーディング方法を適用したシミュレーション結果を示す図。 本発明の第2実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。 図8のエンコーディング方法を適用した例を示す図。 本発明の第3実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。 図10のエンコーディング方法を適用した例を示す図。 本発明の第4実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。 図12のエンコーディング方法を適用した第1例を示す図。 図12のエンコーディング方法の変形例を示す図。 本発明の第2実施形態に係るプログラム方法を示すフローチャート。 本発明の第1実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。 候補データの読み出されたデータからの距離を予測し、予測の結果によってエンコーディングスキームを選択する一例を示すフローチャート。 本発明の第2実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。 本発明の一実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。 本発明の一実施形態に係るプログラム方法を示すフローチャート。 データエンコーディング及びデコーディング部がプログラムデータを分割してエンコーディングする例を示す図。 本発明の第2実施形態に係るメモリシステムを示すブロック図。 本発明の実施形態に係るコンピューティングシステムを示すブロック図。
以下、本発明が属する技術の分野における通常の知識を有する者が、本発明の技術的思想を容易に実施できる程度に詳細に説明するために、本発明の実施形態を添付の図面を参照して説明する。
図1は、本発明の第1実施形態に係るメモリシステム1000を示すブロック図である。図1を参照すると、メモリシステム1000は不揮発性メモリ1100とコントローラ1200とを含んでいる。
不揮発性メモリ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フラッシュメモリを含むことができる。
コントローラ1200は不揮発性メモリ1100を制御するように構成される。コントローラ1200は、制御信号CTRL、コマンドCMD、アドレスADDR、データDATAを不揮発性メモリ1100に伝送するか、または不揮発性メモリ1100と通信することができる。コントローラ1200は、外部ホスト(Host)の制御に応じて不揮発性メモリ1100を制御することができる。
コントローラ1200は、データエンコーディング及びデコーディング部1260を含んでいる。データエンコーディング及びデコーディング部1260は、ホスト(Host)から伝送されるデータをエンコーディングするように構成される。エンコーディングされたデータは、不揮発性メモリ1100にプログラムすることができる。データエンコーディング及びデコーディング部1260は不揮発性メモリ1100から読み出されたデータをデコーディングするように構成される。デコーディングされたデータは、ホスト(Host)に伝送することができる。
例示的に、不揮発性メモリ1100は、メモリセルに接続された導電線を介して電流を流し、メモリセルに格納されたデータ(例えば、論理状態)を変換してメモリセルにデータを格納することができる。すなわち、プログラムの時に、格納されたデータが変わるメモリセルの数は、メモリシステム1000の消費電力を決める重要な要因になり得る。
データエンコーディング及びデコーディング部1260は、プログラム時の消費電力を節減するようにデータをエンコーディングすることができる。例えば、データエンコーディング及びデコーディング部1260は、プログラムの時にメモリセルに格納されるデータとメモリセルに格納されたデータとの差が最小化するようにデータをエンコーディングすることができる。データエンコーディング及びデコーディング部1260の動作は、以下の図面を参照してより詳細に説明する。
図1において、データエンコーディング及びデコーディング部1260は、コントローラ1200の構成要素として示されている。しかし、本発明の技術的思想はこの実施形態に限定されない。データエンコーディング及びデコーディング部1260を不揮発性メモリ1100に含むことも本発明の技術的思想の範疇に属し、本発明の権利範囲に属する。以下、説明の簡略化のため、データエンコーディング及びデコーディング部1260がコントローラ1200に属する実施形態を説明するが、本発明の技術的思想はこれに限定されない。
メモリシステム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は、コンピュータシステムのメインメモリとして形成することができる。
図2は、本発明の実施形態に係る不揮発性メモリ1100を示すブロック図である。図1及び図2を参照すると、不揮発性メモリ1100は、メモリセルアレイ1110と、行デコーダ1120と、列デコーダ1130と、アドレスデコーダ1140と、データ入出力回路1150と、電圧生成器及び制御ロジック1160とを含んでいる。
メモリセルアレイ1110は、複数のメモリセルを含んでいる。複数のメモリセルは、複数の不揮発性メモリセルとすることができる。複数のメモリセルは、ワードラインWLを介して行デコーダ1120に接続し、ビットラインBLを介して列デコーダ1130に接続している。例示的に、メモリセルアレイ1110の複数のメモリセルの行はワードラインWLに接続し、複数のメモリセルの列はビットラインBLに接続することができる。
行デコーダ1120は、ワードラインWLを介してメモリセルアレイ1110と接続している。行デコーダ1120は、電圧生成器及び制御ロジック1160の制御によって動作することができる。行デコーダ1120は、アドレスデコーダ1140からデコーディングされた行アドレスDRAを受信し、デコーディングされた行アドレスDRAによってワードラインWLを各々選択または非選択することができる。行デコーダ1120は、電圧生成器及び制御ロジック1160から提供される電圧を、選択された少なくとも一つのワードライン及び非選択ワードラインに各々供給することができる。
列デコーダ1130は、ビットラインBLを介してメモリセルアレイ1110と接続している。列デコーダ1120は、電圧生成器及び制御ロジック1160の制御によって動作することができる。列デコーダ1120は、アドレスデコーダ1140からデコーディングされた列アドレスDCAを受信し、デコーディングされた列アドレスDCAに応じてビットラインBLを各々選択または非選択することができる。列デコーダ1130は、電圧生成器及び制御ロジック1160から提供される電圧をビットラインに各々供給することができる。
例示的に、列デコーダ1130は、データラインDLを介してデータを受信し、受信されたデータを格納することができる。列デコーダ1130は、格納されたデータに基づいて、ビットラインBLを各々選択または非選択することができる。列デコーダ1130は、ビットラインBLの電圧または電流を感知し、感知結果を格納することができる。感知結果は、メモリセルアレイ1110から読み出されたデータとすることができる。読み出されたデータは、データラインDLを介して出力することができる。
アドレスデコーダ1140は、電圧生成器及び制御ロジック1160の制御によって動作する。アドレスデコーダ1140は、コントローラ1200からアドレスADDRを受信し、受信されたアドレスを格納することができる。アドレスデコーダ1140は、格納されたアドレスのうち行アドレスをデコーディングし、デコーディングされた行アドレスDRAを行デコーダ1120に伝送することができる。アドレスデコーダ1140は、格納されたアドレスのうち列アドレスをデコーディングし、デコーディングされた列アドレスDCAを列デコーダ1130に伝送することができる。
データ入出力回路1150は、電圧生成器及び制御ロジック1160の制御によって動作する。データ入出力回路1150は、コントローラ1200から伝送されるデータを格納し、格納されたデータをデータラインDLに出力することができる。データ入出力回路1150は、データラインDLを介して伝送されるデータを格納し、格納されたデータをコントローラ1200に出力することができる。
電圧生成器及び制御ロジック1160は、コントローラ1200から制御信号CTRL及びコマンドCMDを受信するように構成される。電圧生成器及び制御ロジック1160は、受信された制御信号CTRL及びコマンドCMDに応答して、不揮発性メモリ1100のすべての動作を制御するように構成される。例えば、電圧生成器及び制御ロジック1160は不揮発性メモリ1100の構成要素に電圧を供給し、これらの動作タイミングを制御することができる。
図3A〜図3Cは、本発明の実施形態に係るメモリセルアレイを示す回路図である。図3Aを参照すると、メモリセルアレイ1110aは、ワードラインWl1〜WLnとビットラインBL1〜BLmとに接続されたメモリセルMCを含んでいる。メモリセルMCの各々は、一つの可変抵抗素子を含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて変わる抵抗値を有することができる。メモリセルMCは、ワードラインWl1〜WLnとビットラインBL1〜BLmの電圧に応じて選択または非選択することができる。
図3Bを参照すると、メモリセルアレイ1110bは、ワードラインWl1〜WLnとビットラインBL1〜BLnに接続されたメモリセルMCを含んでいる。メモリセルMCの各々は、一つの可変抵抗素子と1つのダイオードとを含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて可変する抵抗値を有することができる。ダイオードは順方向バイアス時に電流が流れ、逆方向バイアス時には電流が流れない。ダイオードは、ワードラインWl1〜WLnとビットラインBL1〜BLmの電圧に応じてメモリセルMCを選択する選択度を向上させることができる。
例示的に、不揮発性メモリ1100のプログラムは、読み出し、及び消去スキームによって、ダイオードの位置と方向は変更可能である。
図3Cを参照すると、メモリセルアレイ1110cは、ワードラインWl1〜WLn、ソースラインSL1〜SLn、ビットラインBL1〜BLmに接続されたメモリセルMCを含んでいる。メモリセルMCの各々は、一つの可変抵抗素子と1つのトランジスタとを含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて変わる抵抗値を有することができる。トランジスタは、ワードラインWL1〜WLnの電圧によってターンオンまたはターンオフすることができる。トランジスタは、メモリセルMCを選択する選択度を向上させることができる。
例示的に、不揮発性メモリ1100のプログラム、読み出し、消去スキームによって、トランジスタの位置や接続関係は変更可能である。ソースラインSL1〜SLnは、行デコーダ1120または列デコーダ1130に接続することができる。
図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などを含むことができる。
ホストインターフェース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と通信するように構成される。
データエンコーディング及びデコーディング部1260は、データエンコーディング及びデコーディングを実行するように構成される。例えば、データエンコーディング及びデコーディング部1260は、ホストからホストインターフェース1240を介して受信され、ランダムアクセスメモリ1230に格納されたデータをエンコーディングすることができる。エンコーディングされたデータは、ランダムアクセスメモリ1230に格納された後、メモリインターフェース1250を介して不揮発性メモリ1100に伝送することができる。データエンコーディング及びデコーディング部1260は不揮発性メモリ1100からメモリインターフェース1250を介して受信され、ランダムアクセスメモリ1230に格納されたデータをデコーディングすることができる。デコーディングされたデータは、ランダムアクセスメモリ1230に格納された後、ホストインターフェース1240を介してホストに伝送することができる。
データエンコーディング及びデコーディング部1260は不揮発性メモリ1100のメモリセルのデータの変化が減少するようにデータをエンコーディングすることができる。データエンコーディング及びデコーディング部1260は、エンコーディングに対する情報を生成することができる。生成された情報は、エンコーディングされたデータと共に不揮発性メモリ1100に伝送することができる。不揮発性メモリ1100からデータと共にエンコーディングに対する情報を受信することができる。データエンコーディング及びデコーディング部1260は、受信された情報に基づいて、受信されたデータをデコーディングすることができる。
以下、データエンコーディング及びデコーディング部1260が生成するエンコーディングに対する情報をフラグデータ(flag data)という。
例示的に、データエンコーディング及びデコーディング部1260は、プロセッサ1220と分離した別途の構成要素として示されている。しかし、データエンコーディング及びデコーディング部1260は、プロセッサ1220の構成要素として実現することができる。データエンコーディング及びデコーディング部1260は、プロセッサ1220で駆動されるソフトウェアとして実現することができる。本発明の技術的思想から逸脱せず、データエンコーディング及びデコーディング部1260は、コントローラ1200内で様々な形態で実現可能である。
図5は、本発明の第1実施形態に係るプログラム方法を示すフローチャートである。図1、図4、図5を参照すると、S110段階において、ホストからプログラムデータが受信される。コントローラ1200は、ホストからホストインターフェース1240を介してプログラムデータを受信し、これをランダムアクセスメモリ1230に格納することができる。
S120段階において、不揮発性メモリ1100から受信されたプログラムデータに対応するデータが読み出される。例えば、コントローラ1200は、受信されたプログラムデータがプログラムされる不揮発性メモリ1100の格納領域からデータを読み出すことができる。コントローラ1200は、プログラムデータと共に受信されるアドレスを用いて、読み出しを実行するように不揮発性メモリ1100を制御することができる。読み出されたデータは、メモリインターフェース1250を介して受信され、ランダムアクセスメモリ1230に格納することができる。
S130段階において、プログラムデータ及び読み出されたデータに基づいて、プログラムデータがエンコーディングされ、エンコーディング情報を含むフラグデータが生成される。データエンコーディング及びデコーディング部1260は、ランダムアクセスメモリ1230に格納されたプログラムデータと読み出されたデータとを比較することができる。比較の結果によって、データエンコーディング及びデコーディング部1260は、ランダムアクセスメモリ1230に格納されたプログラムデータをエンコーディングすることができる。データエンコーディング及びデコーディング部1260はエンコーディングを実行して、少なくとも一つの候補データを生成し、生成された候補データとプログラムデータとを比較することができる。データエンコーディング及びデコーディング部1260は、候補データ及びプログラムデータのうちの一つをエンコーディングされたデータとして選択することができる。
エンコーディングされたデータは、ランダムアクセスメモリ1230に格納することができる。データエンコーディング及びデコーディング部1260は、プログラムデータをエンコーディングされたデータとして選択する場合、エンコーディングされたデータがランダムアクセスメモリ1230に格納される動作は省略可能である。
エンコーディングされたデータが選択されれば、データエンコーディング及びデコーディング部1260はエンコーディング情報を含むフラグデータを生成することができる。フラグデータは、候補データ及びプログラムデータのうちのいずれかデータがエンコーディングされたデータとして選択されたかに対する情報を含むことができる。フラグデータは、ランダムアクセスメモリ1230に格納することができる。
S140段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ1100にプログラムされる。ランダムアクセスメモリ1230に格納されたエンコーディングされたデータ及びフラグデータは、メモリインターフェース1250を介して不揮発性メモリ1100に伝送することができる。不揮発性メモリ1100は、コントローラ1200の制御によって、受信されたデータを読み出されたデータが格納された格納領域にプログラムすることができる。
図6Aは、本発明の第1実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図6Aを参照すると、S210段階において、プログラムデータが候補データとして選択される。
S220段階において、読み出されたデータを候補データと比較する。例えば、読み出されたデータと候補データとの間の距離を比較することができる。距離は読み出されたデータと、読み出されたデータと比較されるデータとの間で互いに異なる値を有するビットの数であり得る。
S230段階において、距離が基準値未満であるか否かを判断する。例えば、読み出されたデータと候補データとの間の距離が基準値未満であるか否かを判断する。距離が基準値未満であれば、S240段階において、比較された候補データがエンコーディングされたデータとして選択され、S280段階が実行される。距離が基準値未満でなければ、S250段階が実行される。
S250段階において、最大ループに到達したか否かを判別する。最大ループ数は、データエンコーディング及びデコーディング部1260に設定することができる。最大ループ数は、コントローラ1200に予め格納することができる。最大ループ数は、コントローラ1200のモードレジスタを通じて設定することができる。
最大ループに到達しない場合、S260段階で、以前の候補データを1ビットシフトして、新しい候補データを生成する。その後、S220段階が再び実行される。
最大ループに到達した場合は、S270段階で、読み出されたデータと最短距離を有するデータがエンコーディングされたデータとして選択される。
S280段階において、選択されたデータを示すフラグデータが生成される。例えば、フラグデータは、候補データ及びプログラムデータのうちエンコーディングされたデータとして選択されたデータに対する情報を含むことができる。例えば、フラグデータは、選択されたデータがプログラムデータからシフトされたビット数に対する情報を含むことができる。
図6Bは、図6Aのエンコーディング方法の応用例を示すフローチャートである。図6Bを参照すると、S260段階において、読み出されたデータとプログラムデータとの間の距離を計算する。
S270段階において、プログラムデータと読み出されたデータとの間の距離を基準値と比較する。プログラムデータと読み出されたデータとの間の距離が基準値より大きくなければ、S280段階において、プログラムデータがエンコーディングされたデータとして選択される。プログラムデータと読み出されたデータとの間の距離が基準値より大きければ、S290段階において、図6Aを参照して説明したエンコーディング方法が実行される。
すなわち、図6Aのエンコーディング方法は、プログラムデータと読み出されたデータとの間の距離が基準値より大きい場合に実行することができる。
図7Aは、図6のエンコーディング方法を適用した例を示す。例示的に、最大ループが3の例を図7Aに示す。図7Aから、差(difference)は、読み出されたデータとプログラムデータと候補データとの間の差を示す。例えば、特定の位置の読み出されたデータのビットとプログラムデータ又は候補データのビットが同一のビットである場合、該当位置の差ビットは‘0’とすることができる。特定の位置の読み出されたデータのビットとプログラムデータ又は候補データのビットが互いに異なるビットである場合、該当位置の差ビットは‘1’とすることができる。
図1及び図7Aを参照すると、プログラムデータが1ビットシフトされて、第1候補データが生成される。例えば、プログラムデータは左側にシフトすることができる。プログラムデータが2ビットシフトされて(または、第1候補データが1ビットシフトされて)第2候補データが生成される。プログラムデータが3ビットシフトされて(または、第2候補データが1ビットシフトされて)、第3候補データが生成される。
プログラムデータと読み出されたデータとの間の距離は6である。プログラムデータがエンコーディングされたデータとして選択されたことを示すフラグデータは‘00’とすることができる。第1候補データと読み出されたデータとの間の距離は6である。第1候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘01’とすることができる。第2候補データと読み出されたデータとの間の距離は4である。第2候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘10’とすることができる。第3候補データと読み出されたデータとの間の距離は4である。第3候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘11’とすることができる。
読み出されたデータと最短距離を有するデータ、すなわち第2及び第3候補データのうちの一つがエンコーディングされたデータとして選択され得る。第2候補データが選択されれば、フラグデータは‘10’に生成することができる。第3候補データが選択されれば、フラグデータは‘11’に生成することができる。
第2または第3候補データと読み出されたデータとの間の距離は、プログラムデータと読み出されたデータとの間の距離より小さい。プログラムデータが不揮発性メモリ1100にプログラムされる時、6ビットが変わるようになる。すなわち、6つのメモリセルのデータを変換することができる。一方、第2または第3候補データが不揮発性メモリ1100にプログラムされる時、4ビットが変わるようになる。すなわち、4つのメモリセルのデータを変換することができる。
データが変換するメモリセルの数が減少すると、プログラム時の消費電力が低減するようになる。したがって、本発明の実施形態によれば、メモリシステム1000の消費電力が減少するようになる。消費電力が減少するようになれば、メモリシステム1000が支援する電源容量を減少させることができる。したがって、メモリシステム1000のサイズと複雑さを減少させることができる。
図7Bは、図6のエンコーディング方法を適用した他の例を示す。例示的に、最大ループが3の例を図7Bに示す。図7Aと比較すると、読み出されたデータ、プログラムデータ、そして第1〜第3候補データはバイト単位で比較され、シフトされる。すなわち、本発明の実施形態に係るエンコーディング方式は、ビット単位だけではなく、バイト単位でも実行可能である。
図7Cは、2ビットのフラグデータを用いて、図6のエンコーディング方法を適用したシミュレーション結果を示す。図7Dは、4ビットのフラグデータを用いて、図6のエンコーディング方法を適用したシミュレーション結果を示す。例示的に、図7C及び図7Dは、ランダムデータパターンに基づいたシミュレーション結果を示す。
図1、図7C及び図7Dを参照すると、循環シフトエンコーディングが実行されるプログラムデータの長さ(N)に応じて、プログラムデータがプログラムされる時と、エンコーディングされたデータがプログラムされる時に変更されるビットの数を各々示している。
図7Cと図7Dに示すように、プログラムデータが不揮発性メモリ1100にプログラムされる時よりエンコーディングされたデータがプログラムされる時に、変換するビットの数が減少する。したがって、本発明の実施形態に係るエンコーディング方法(またはプログラム方法)が適用されれば、メモリシステム1000の消費電力が減少するようになる。
図8は、本発明の第2実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図8に示したエンコーディング方法は、差分エンコーディングとすることができる。図8を参照すると、S310段階において、候補データの第1ビットがプログラムデータの第1ビットと同じように生成される。例えば、プログラムデータの第1ビットが‘0’であれば、候補データの第1ビットは‘0’に生成される。プログラムデータの第1ビットが‘1’であれば、候補データの第1ビットは‘1’に生成される。
S320段階において、プログラムデータの次のビットが選択される。
S330段階において、選択されたビットが前のビットと同一であるか否かが判別される。例えば、プログラムデータの選択されたビットが、プログラムデータの前のビットと同じビットであるか否かが判別される。プログラムデータの選択されたビットが‘1’であり、プログラムデータの前のビットが‘1’あれば、同じビットとして判別される。プログラムデータの選択されたビットが‘0’であり、プログラムデータの前のビットが‘0’であれば、同じビットとして判別される。プログラムデータの選択されたビットが‘1’であり、プログラムデータの前のビットが‘0’であれば、同一ではないビットとして判別される。プログラムデータの選択されたビットが‘0’であり、プログラムデータの前のビットが‘1’であれば、同一ではないビットとして判別される。
選択されたビットが同じビットとして判別されれば、S341段階において、候補データのビットがロジックロー(例えば、‘0’)に生成される。選択されたビットが同一ではないビットとして判別されれば、S343段階において、候補データのビットがロジックハイ(例えば、‘1’)として選択される。例えば、プログラムデータの選択されたビットの位置と同じ位置に存在する候補データのビットが生成することができる。
例示的に、選択されたビットが同じビットとして判断されれば、候補データのビットがロジックハイ(例えば、‘1’)に生成され、選択されたビットが同一ではないビットとして判断されれば、候補データのビットがロジックロー(例は、‘0’)として選択される。
S350段階において、選択されたビットが最後のビットであるか否かが判断される。例えば、プログラムデータの選択されたビットが、プログラムデータの最後のビットであるか否かを判別することができる。選択されたビットが最後のビットではなければ、S320の段階を再び実行する。
選択されたビットが最後のビットであれば、S360段階〜S380段階において、エンコーディングされたデータが選択され、フラグデータが生成される。S360段階〜S380の段階は、図6のS230段階〜S250段階と同じ方法で実行される。したがって、S360段階〜S380段階の詳細な説明は省略する。
図9は、図8のエンコーディング方法を適用した例を示す。図9を参照すると、プログラムデータの第1ビットが‘1’であるため、候補データの第1ビットは‘1’に生成される。プログラムデータの第2ビットは‘0’であり、第1ビットと同一ではない。したがって、候補データの第2ビットは‘1’に生成される。同様に、プログラムデータの連続する2つのビットが比較され、比較の結果によって候補データが生成される。
プログラムデータがエンコーディングされたデータとして選択したことを示すフラグデータは‘0’になることができる。候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘1’になることができる。
プログラムデータと読み出されたデータとの間の距離は6である。候補データと読み出したデータとの間の距離は1である。したがって、候補データが選択され、フラグデータが‘1’に生成される。
図10は、本発明の第3実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図10に示したエンコーディング方法は、バイナリマスクエンコーディングである。図1及び図10を参照すると、S410段階において、予め設定されたデータが備えられる。予め設定されたデータは、コントローラ1200に予め格納することができる。予め設定されたデータは、コントローラ1000のモードレジスタを通じて設定することができる。コントローラ1200は、複数のデータを予め格納し、予め格納された複数のデータのうちの一つを予め設定されたデータとして選択することができる。予め設定されたデータの長さは、プログラムデータの長さと同一であり得る。
S420段階において、プログラムデータと予め設定されたデータの論理演算を実行して、候補データを生成する。例えば、プログラムデータの予め設定されたデータの排他的論理積を実行し、排他的論理積の実行結果を候補データとして生成することができる。
S430段階〜S450段階において、エンコーディングされたデータが選択され、フラグデータが生成する。S430段階〜S450の段階は、図6のS230段階〜S250段階と同様の方法で実行される。したがって、S430段階〜S450段階の詳細な説明は省略する。
図11は、図10のエンコーディング方法を適用した例を示す。図11を参照すると、プログラムデータと予め設定されたデータの排他的論理積の結果が候補データとして生成される。プログラムデータがエンコーディングされたデータとして選択したことを示すフラグデータは‘0’とすることができる。候補データがエンコーディングされたデータを選択したことを示すフラグデータは‘1’とすることができる。
プログラムデータと読み出されたデータとの間の距離は6である。候補データと読み出されたデータとの間の距離は4である。したがって、候補データがエンコーディングされたデータとして選択され、フラグデータが‘1’に生成される。
例示的に、予め設定されたデータは、複数のデータセットのうちで選択することができる。このとき、フラグデータは複数のデータセットのうち、いずれのデータが予め設定されたデータとして選択されたかに対する情報をさらに含むことができる。
図12は、本発明の第4実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図12に示したエンコーディング方法は、ビット反転エンコーディングである。図12を参照すると、S510段階において、プログラムデータを反転して候補データが生成される。
S520段階〜S540段階において、エンコーディングされたデータが選択され、フラグデータが生成される。S520段階〜S540の段階は、図6のS230段階〜S250段階と同じ方法で実行される。したがって、S520段階〜S540段階の詳細な説明は省略する。
図13Aは、図12のエンコーディング方法を適用した第1例を示す。図13Aを参照すると、プログラムデータを反転して候補データが生成される。プログラムデータがエンコーディングされたデータとして選択されたことを示すフラグデータは‘0’とすることができる。候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘1’とすることができる。
プログラムデータと読み出されたデータとの間の距離は6である。候補データと読み出されたデータとの間の距離は2である。したがって、候補データがエンコーディングされたデータとして選択され、フラグデータが‘1’に生成される。
図13Bは、図12のエンコーディング方法の変形例を示す。例示的に、プログラムデータが複数の部分に分割され、分割された部分の各々が選択的に反転する例を図13Bに示した。例示的に、プログラムデータは、8ビットであり、プログラムデータは二つの部分に分けることができる。
プログラムデータの1番目の部分が反転して第1候補データを生成することができる。プログラムデータの2番目の部分が反転して第2候補データを生成することができる。プログラムデータの1番目と2番目の部分が反転して第3候補データを生成することができる。
プログラムデータが選択されたこと示すフラグデータは‘00’とすることができる。第1候補データが選択されたこと示すフラグデータは‘01’とすることができる。第2候補データが選択されたこと示すフラグデータは‘10’とすることができる。第3候補データが選択されたこと示すフラグデータは‘11’とすることができる。
プログラムデータと読み出されたデータとの間の距離は6である。第1候補データと読み出されたデータとの間の距離は6である。第2候補データと読み出されたデータとの間の距離は2である。第3候補データと読み出されたデータとの間の距離は2である。したがって、第2及び第3候補データのうちの一つがエンコーディングされたデータとして選択され、フラグデータは、‘10’又は‘11’に生成することができる。
図14は、本発明の第2実施形態に係るプログラム方法を示すフローチャートである。図1及び図14を参照すると、S610段階において、プログラムデータが受信され、S620段階において、プログラムデータに対応するデータが読み出される。S610段階とS620段階は、図5のS110段階とS120段階と同じ方法で実行することができる。
S630段階において、複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択され、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされ、エンコーディング情報を含むフラグデータが生成される。
S640段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ1100にプログラムされる。
例示的に、複数のエンコーディングスキームは、データエンコーディング及びデコーディング部1260に格納され、エンコーディングスキームの選択は、データエンコーディング及びデコーディング部1260によって行うことができる。
図15は、本発明の第1実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図15を参照すると、S710段階において、複数のエンコーディングスキームの候補データと読み出されたデータとの間の距離が予測される。距離の予測は距離に影響を及ぼす要素(以下、距離の要素という)を計算することによって行うことができる。距離の予測は、直接的に予想距離を計算する動作を含むことができる。距離の予測は、距離の要素を計算する動作を含み得る。距離の予測は、本発明の技術的思想を表現する一例であり、本発明の技術的思想は、直接距離を予測するものに限定されない。
S720段階において、予測の結果に基づいて、複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択される。例えば、読み出されたデータと最短距離を有する候補データとを生成することによって予測されるエンコーディングスキームを選択することができる。
S730段階において、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされる。
S740段階において、選択情報及びエンコーディング情報を含むフラグデータが生成される。選択情報は、複数のエンコーディングスキームのうちのいずれのエンコーディングスキームが選択されたかに対する情報を含むことができる。
図16は、候補データの読み出されたデータからの距離を予測し、予測の結果に基づいてエンコーディングスキームを選択する一例を示すフローチャートである。図1及び図16を参照すると、S711段階において、読み出されたデータとプログラムデータとの間の変換ビット及び同じビットがカウントされる。変換ビットは、読み出されたデータ及びプログラムデータの同じ位置のビットが互いに異なるビットを示す。同じビットは、読み出されたデータ及びプログラムデータの同じ位置のビットが同じビットを示す。この段階は、候補データの読み出されたデータからの距離を予測する動作(図15のS710段階)に対応することができる。
例示的に、読み出されたデータとプログラムデータに基づいて計算された変換ビット及び同じビットの差が閾値より小さい場合、循環シフトエンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離がビット反転エンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離より小さいと予測することができる。変換ビット及び同じビットの差が閾値より小さくなければ、循環シフトエンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離がビット反転エンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離より大きいと予測することができる。
S721段階において、変換ビット数と同じビット数の差が閾値より小さいか否かが判別される。差が閾値より小さければ、S723段階において、循環シフトエンコーディングスキームを選択することができる。差が閾値より小さくなければ、S725段階において、ビット反転エンコーディングスキームを選択することができる。
閾値は、コントローラ1200に予め格納された値であり得る。閾値は、コントローラ1200のモードレジスタを通じて設定される値であり得る。閾値は、プログラムデータの全体の長さの半分として設定することができる。
S721段階〜S725段階は、予測の結果によってエンコーディングスキームを選択する動作(図15のS720段階)に対応することができる。
例示的に、循環シフトエンコーディングスキームとビット反転エンコーディングスキームとを含むデータエンコーディング及びデコーディング部1260が、変換ビット及び同じビットの数を利用してエンコーディングスキームを選択する例が説明された。しかし、候補データの読み出されたデータからの距離を予測し、予測の結果によってエンコーディングスキームを選択する方法は、図16を参照して説明した例に限定されない。
データエンコーディング及びデコーディング部1260は、循環シフトエンコーディングスキーム、差分エンコーディングスキーム、バイナリマスクエンコーディングスキーム、ビット反転エンコーディングスキームなどを含む様々なエンコーディングスキームのうちで、少なくとも二つのエンコーディングスキームを含むことができる。データエンコーディング及びデコーディング部1260は、変換ビット及び同じビットの数、プログラムデータのビットが遷移する回数、プログラムデータと読み出されたデータの相互相関図、バイナリマスクエンコーディングのための予め設定されたデータとプログラムデータの相互相関図、プログラムデータの‘1’又は‘0’の数などを含む様々な距離の要素の計算結果によってエンコーディングスキームを選択することができる。
図17は、本発明の第2実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図17を参照すると、S810段階及びS820段階において、予測の結果によって複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択される。S810段階とS820の段階は、図15のS710段階及びS720段階と同じ方法で実行することができる。
S830段階において、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされる。
S840段階において、エンコーディングされたデータと読み出されたデータとの間の距離が閾値より小さいか否かが判別される。エンコーディングされたデータと読み出されたデータとの間の距離が閾値より大きい場合は、S850段階において、複数のエンコーディングスキームのうち、次のエンコーディングスキームが選択される。例えば、選択されたエンコーディングスキームの次に近い距離を有する候補データを生成すると予測されるエンコーディングスキームを選択することができる。その後、S830の段階が再び実行される。
エンコーディングされたデータと読み出されたデータとの間の距離が閾値より小さければ、S860段階において、選択情報及びエンコーディング情報を含むフラグ情報が生成される。
すなわち、予測の結果によってエンコーディングスキームが選択されても、選択されたエンコーディングスキームのエンコーディング結果が特定の条件(例えば、閾値)を満足しなければ、他のエンコーディングスキームを選択することができる。
例示的に、閾値は、プログラムのデータと読み出されたデータとの間の距離に対する割合として設定することができる。閾値は、プログラムデータの全体のビットの数に対する割合として設定することができる。
図18は、本発明の一実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図18を参照すると、S910段階において、複数のエンコーディングスキームのうちで、一番目のエンコーディングスキームが選択される。
S920段階において、選択されたエンコーディングスキームを用いて、プログラムデータをエンコーディングして、候補データが生成される。
S930段階において、距離が基準値未満であるか否かが判断される。例えば、読み出されたデータと候補データとの間の距離が基準値未満であるか否かが判断される。距離が基準値未満であれば、S940段階において、比較された候補データがエンコーディングされたデータとして選択され、S980段階が実行される。距離が基準値未満でなければ、S950段階が実行される。
S930段階において、選択されたエンコーディングスキームが最後のエンコーディングスキームであるか否かが判断される。選択されたエンコーディングスキームが最後のエンコーディングスキームでなければ、S960段階において、複数のエンコーディングスキームのうち、次のエンコーディングスキームが選択され、S920の段階が再び実行される。選択されたエンコーディングスキームが最後のエンコーディングスキームであれば、S970段階が実行される。
S970段階において、読み出されたデータと最短距離を有するデータがエンコーディングされたデータとして選択される。
S980段階において、選択情報及びエンコーディング情報を含むフラグデータが生成される。
すなわち、複数のエンコーディングスキームを利用してプログラムデータが順にエンコーディングされ、エンコーディング結果のうち最短距離を有するデータがエンコーディングされたデータとして選択される。
図19は、本発明の一実施形態に係るプログラム方法を示すフローチャートである。図1及び図19を参照すると、S1010段階において、プログラムデータが受信され、S1020段階において、プログラムデータに対応するデータが不揮発性メモリ1100から読み出される。S1010段階及びS1020段階は、図5のS110段階とS120段階と同じ方法で実行することができる。
S1030段階において、複数のエンコーディングスキームのうち二つ以上のエンコーディングスキームが選択され、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされ、そしてエンコーディング情報及び選択情報を含むフラグデータが生成される。
例示的に、ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームを選択することができる。この時、プログラムデータは、まず、ビット反転エンコーディングスキームによって1次エンコーディングすることができる。その後、1次エンコーディングされたデータは、循環シフトエンコーディングスキームによって二次エンコーディングすることができる。ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームの例をあげて実施形態を説明した。しかし、この実施形態は、ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームに限定されない。
S1040段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ1100にプログラムされる。
例示的に、データエンコーディング及びデコーディング部1260は、二つ以上のエンコーディングスキーム及びこれらの組み合わせを選択することができる。図15〜図17を参照して説明したように、データエンコーディング及びデコーディング部1260は、予測の結果(または距離の要素の計算結果)によってエンコーディングスキームを選択することができる。図18を参照して説明したように、データエンコーディング及びデコーディング部1260は、複数のエンコーディングスキームを順に選択及び組み合わせてエンコーディングを行い、エンコーディング結果によってエンコーディングされたデータを選択することができる。
例示的に、データエンコーディング及びデコーディング部1260が、循環シフトエンコーディングスキーム及びビット反転エンコーディングスキームを選択する時、プログラムデータ、ビット反転エンコーディングされたデータ、1ビット循環シフトエンコーディングされたデータ、2ビット循環シフトエンコーディングされたデータ、3ビット循環シフトエンコーディングされたデータ、1ビット循環シフト及びビット反転エンコーディングされたデータ、2ビット循環シフト及びビット反転エンコーディングされたデータ、3ビット循環シフト及びビット反転エンコーディングされたデータのうちの一つをエンコーディングされたデータとして選択ことができる。
図20は、データエンコーディング及びデコーディング部1260がプログラムデータを分割してエンコーディングする例を示す。図20を参照すると、データエンコーディング及びデコーディング部1260は、プログラムデータを複数の部分に分割してエンコーディングすることができる。
例えば、データエンコーディング及びデコーディング部1260は、プログラムデータの部分の各々に対して同じエンコーディングスキームを適用することができる。プログラムデータの部分の各々に対して、循環シフトエンコーディングスキーム、差分エンコーディングスキーム、バイナリマスクエンコーディングスキーム、ビット反転エンコーディングスキームのうちの一つのエンコーディングスキームを適用することができる。フラグデータは、選択されたエンコーディングスキームに対する情報を含むことができる。
例えば、データエンコーディング及びデコーディング部1260は、プログラムデータの部分の各々に対して独立してエンコーディングスキームを適用することができる。プログラムデータの第1部分は、1ビット循環シフトエンコーディングされ、第2部分は、3ビット循環シフトエンコーディングされ、第3部分は、元のデータに保持され、第4部分は、ビット反転エンコーディングされ得る。フラグデータは、プログラムデータの各部分に適用されたエンコーディングスキームに対する情報を含むことができる。
プログラムデータが分割されてエンコーディングされれば、エンコーディングされたデータと読み出されたデータとの間の距離を減少させることができる。
図21は、本発明の第2実施形態に係るメモリシステム2000を示すブロック図である。図21を参照すると、メモリシステム2000は不揮発性メモリ2100とコントローラ2200とを含んでいる。
不揮発性メモリ2100は、複数の不揮発性メモリチップを含んでいる。複数の不揮発性メモリチップは、複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャネルを通じてコントローラ2200と通信するように構成される。例示的に、複数の不揮発性メモリチップは、第1から第kチャンネルCH1〜CHkを通じてコントローラ2200と通信することを示している。
コントローラ2200は、データエンコーディング及びデコーディング部2260を含んでいる。データエンコーディング及びデコーディング部2260は、図5〜図20を参照して説明したエンコーディング及びフラグデータの生成を行うことができる。
図22は、本発明の実施形態に係るコンピューティングシステム3000を示すブロック図である。図22を参照すると、コンピューティングシステム3000は、バス3100と、プロセッサ3200と、メモリシステム3300と、モデム3400と、ユーザインターフェース3500とを含んでいる。
バス3100は、コンピューティングシステム3000の構成要素の間にチャンネルを提供する。
プロセッサ3200は、コンピューティングシステム3000のすべての動作を制御し、論理演算を実行することができる。
メモリシステム3300は、本発明の実施形態に係るメモリシステム1000または2000を含むことができる。メモリシステム3300は、コンピューティングシステム3000の動作メモリ又はストレージに提供することができる。動作メモリは、プロセッサ3200が、コンピューティングシステム3000を制御するために使用する格納領域とすることができる。ストレージは、コンピューティングシステム3000が、データの長期的な格納のために使用する格納領域とすることができる。
メモリシステム3300が動作メモリとして提供される時、コンピューティングシステム3000は、別々のストレージをさらに含むことができる。メモリシステム3300がストレージとして提供される時、コンピューティングシステム3000は、別々の動作メモリをさらに含むことができる。
モデム3400は、外部と有線または無線通信を行うことができる。
ユーザインターフェース3500は、カメラ、キーボード、マウス、マイク、タッチパッド、タッチパネル、ボタン、センサなどのようなユーザ入力インターフェース、ディスプレイ、スピーカ、ランプ、モータなどのようなユーザ出力インターフェースを含むことができる。
コンピューティングシステム3000は、スマートフォン、スマートパッドなどのようなモバイルマルチメディア装置、又はスマートテレビ、スマートモニタ、コンピュータ、ノートパソコンなどのようなマルチメディア装置を形成することができる。
本発明の詳細な説明では具体的な実施形態について説明したが、本発明の範囲と技術的思想から逸脱しない範囲内で様々な変形が可能である。したがって、本発明の範囲は、上述の実施形態に限定されず、後述の特許請求の範囲だけではなく、この発明の特許請求の範囲と均等なものにより決められなければならない。
1000、2000・・・メモリシステム
1100、2100・・・不揮発性メモリ
1200、2200・・・コントローラ
1210、3100・・・バス
1220、3200・・・プロセッサ
1230・・・ランダムアクセスメモリ
1240・・・ホストインターフェース
1250・・・メモリインターフェース
1260、2260・・・データエンコーディング及びデコーディング部
3000・・・コンピューティングシステム
3300・・・メモリシステム
3400・・・モデム
3500・・・ユーザインターフェース

Claims (23)

  1. メモリにデータをプログラムするプログラム方法において、
    プログラムデータを受信する段階と、
    前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、
    前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階と、
    前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
  2. 前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
    前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階と、
    前記予測の結果によって前記複数のエンコーディングスキームのうちの少なくとも一つのエンコーディングスキームを選択する段階とを含むことを特徴とする請求項1に記載のプログラム方法。
  3. 前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階は、
    前記読み出されたデータとプログラムデータとの間の同じビット及び変換ビットを各々カウントする段階を含むことを特徴とする請求項2に記載のプログラム方法。
  4. 前記複数のエンコーディングスキームは、循環シフトエンコーディングスキームと反転エンコーディングスキームとを含み、
    前記予測の結果によって、少なくとも一つのエンコーディングスキームを選択する段階と、前記プログラムデータをエンコーディングする段階とは、
    前記変換ビット数と同じビット数の差が閾値より小さい場合、前記循環シフトエンコーディングスキームを選択して、プログラムデータをシフトし、前記差が前記閾値以上の場合、前記反転エンコーディングスキームを選択して、前記プログラムデータを反転させる段階を含むことを特徴とする請求項3に記載のプログラム方法。
  5. 前記エンコーディングされたデータと前記読み出されたデータとの間の距離が閾値より小さい場合、前記エンコーディング情報を含むフラグデータを生成し、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が前記閾値以上である場合、前記予測の結果によって前記複数のエンコーディングスキームのうち、他のエンコーディングスキームを選択し、前記選択された他のエンコーディングスキームを用いて前記プログラムデータをエンコーディングし、前記フラグデータを生成する段階をさらに含むことを特徴とする請求項2に記載のプログラム方法。
  6. 前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
    前記複数のエンコーディングスキームを順に選択し、選択されたエンコーディングスキームを用いて、前記プログラムデータをエンコーディングして候補データを生成する段階と、
    前記プログラムデータ及び候補データを前記読み出されたデータと各々比較する段階と、
    前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択する段階と、
    前記エンコーディング情報を含むフラグデータを生成する段階とを含むことを特徴とする請求項1に記載のプログラム方法。
  7. 前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
    複数のエンコーディングスキームを選択し、前記選択された複数のエンコーディングスキームを組み合わせ、前記プログラムデータをエンコーディングし、前記エンコーディング情報を含むフラグデータを生成する段階を含むことを特徴とする請求項1に記載のプログラム方法。
  8. 前記エンコーディング情報は、前記プログラムデータ及び前記少なくとも一つのエンコーディングスキームによって生成される候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項1に記載のプログラム方法。
  9. 前記複数のエンコーディングスキームは、
    前記プログラムデータを循環シフトして候補データを生成する循環シフトエンコーディングスキームを含み、
    前記フラグデータは、前記エンコーディングされたデータが、前記プログラムデータから循環シフトされたビット数に対する情報を含むことを特徴とする請求項1に記載のプログラム方法。
  10. 前記複数のエンコーディングスキームは、
    前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する差分エンコーディングスキームを含み、
    前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項1に記載のプログラム方法。
  11. 前記複数のエンコーディングのスキームは、
    予め設定されたデータと前記プログラムデータの論理演算を実行して、候補データを生成するバイナリマスクエンコーディングスキームを含み、
    前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項1に記載のプログラム方法。
  12. 前記複数のエンコーディングスキームは、
    前記プログラムデータを反転して候補データを生成するビット反転エンコーディングスキームを含み、
    前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項1に記載のプログラム方法。
  13. 前記プログラムデータは、複数のサブデータに分割され、前記複数のサブデータの各々に対して、前記少なくとも一つのエンコーディングスキームが選択されることを特徴とする請求項1に記載のプログラム方法。
  14. メモリにデータをプログラムするプログラム方法において、
    プログラムデータを受信する段階と、
    前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、
    前記プログラムデータ及び読み出されたデータを複数のプログラムデータのグループ及び複数の読み出されたデータのグループに各々分割する段階と、
    前記複数のプログラムデータのグループの各々に対して、前記複数の読み出されたデータのグループのうち対応するグループに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いてエンコーディングを実行し、エンコーディング結果を組み合わせて、エンコーディングされたデータを生成する段階と、
    各プログラムデータのグループのエンコーディング情報を含むフラグデータを生成する段階と、
    前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
  15. メモリにデータをプログラムするプログラム方法において、
    プログラムデータを受信する段階と、
    前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
    前記プログラムデータを候補データとして選択する段階と、
    前記候補データと前記読み出されたデータとを比較する段階と、
    前記比較の結果によって、前記候補データと前記読み出されたデータとの間の距離が基準値未満であれば、前記候補データをエンコーディングされたデータとして選択し、前記候補データと前記読み出されたデータとの間の距離が前記基準値以上であれば、前記候補データを循環シフトして、他の候補データを生成して前記比較する段階と、前記比較の結果によってエンコーディングされたデータを選択するか、又は他の候補データを選択する段階を再び実行する段階と、
    前記エンコーディングされたデータが、前記プログラムデータからシフトされたビット数に対する情報を含むフラグデータを生成する段階と、
    前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
  16. 前記エンコーディングされたデータが選択されず、前記再び実行する段階が予め決められた回数だけ実行されれば、前記プログラムデータ及び前記循環シフトによって生成された候補データのうち、前記読み出されたデータと最も距離が近いデータが前記エンコーディングされたデータとして選択されることを特徴とする請求項15に記載のプログラム方法。
  17. メモリと、
    前記メモリを制御するように構成されるコントローラとを含み、
    前記コントローラは、
    ランダムアクセスメモリと、
    外部からプログラムデータを受信して前記ランダムアクセスメモリに格納するように構成されるホストインターフェースと、
    前記メモリから読み出されたデータを受信し、前記ランダムアクセスメモリに格納するように構成されるメモリインターフェースと、
    前記ランダムアクセスメモリに格納された前記読み出されたデータに基づいて、前記ランダムアクセスメモリに格納された前記プログラムデータをエンコーディングし、エンコーディングされたデータを、前記ランダムアクセスメモリに格納するように構成されるデータエンコーディング部と、
    前記ランダムアクセスメモリに格納された前記エンコーディングされたデータを前記メモリにプログラムするように前記メモリインターフェースを制御するプロセッサとを含み、
    前記データエンコーディング部は、前記読み出されたデータ及び前記プログラムデータの比較の結果によって前記エンコーディングされたデータを生成するようにさらに構成されることを特徴とするメモリシステム。
  18. 前記データエンコーディング部は、複数のエンコーディングのスキームのうちで少なくとも一つのエンコーディングスキームを選択し、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングするようにさらに構成されることを特徴とする請求項17に記載のメモリシステム。
  19. 前記データエンコーディング部は、前記プログラムデータを循環シフトエンコーディングして候補データを生成し、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択するようにさらに構成されることを特徴とする請求項17に記載のメモリシステム。
  20. 前記メモリは、磁気RAM又は相変化RAMを含むことを特徴とする請求項17に記載のメモリシステム。
  21. メモリにデータをプログラムするプログラム方法において、
    プログラムデータを受信する段階と、
    前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
    前記プログラムデータの一番目のビットと同一のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する段階と、
    前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、
    前記プログラムデータ及び候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、
    前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
  22. メモリにデータをプログラムするプログラム方法において、
    プログラムデータを受信する段階と、
    前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
    予め設定されたデータと前記プログラムデータの論理演算を実行して、候補データを生成する段階と、
    前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、
    前記プログラムデータ及び候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、
    前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
  23. メモリにデータをプログラムするプログラム方法において、
    プログラムデータを受信する段階と、
    前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
    前記受信されたプログラムデータを、第1及び第2部分に分割する段階と、
    前記受信されたプログラムデータの第1部分を反転して、第1候補データを生成する段階と、
    前記受信されたプログラムデータの第2部分を反転して、第2候補データを生成する段階と、
    前記プログラムデータと、第1及び第2候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、
    前記プログラムデータと、第1及び第2候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、
    前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
JP2013220131A 2012-10-23 2013-10-23 不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法 Active JP6209051B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0118019 2012-10-23
KR1020120118019A KR102049281B1 (ko) 2012-10-23 2012-10-23 불휘발성 메모리 및 컨트롤러를 포함하는 메모리 시스템, 그리고 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법

Publications (2)

Publication Number Publication Date
JP2014086127A true JP2014086127A (ja) 2014-05-12
JP6209051B2 JP6209051B2 (ja) 2017-10-04

Family

ID=50437183

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013220131A Active JP6209051B2 (ja) 2012-10-23 2013-10-23 不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法

Country Status (6)

Country Link
US (1) US9183138B2 (ja)
JP (1) JP6209051B2 (ja)
KR (1) KR102049281B1 (ja)
CN (1) CN103778961B (ja)
DE (1) DE102013111549B4 (ja)
TW (1) TWI613658B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160014860A (ko) * 2014-07-29 2016-02-12 삼성전자주식회사 불휘발성 메모리, 데이터 저장 장치, 및 데이터 저장 장치의 동작 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9304703B1 (en) * 2015-04-15 2016-04-05 Symbolic Io Corporation Method and apparatus for dense hyper IO digital retention
US10068628B2 (en) 2013-06-28 2018-09-04 Intel Corporation Apparatus for low power write and read operations for resistive memory
KR20160108659A (ko) 2015-03-04 2016-09-20 에스케이하이닉스 주식회사 반도체 메모리 장치의 동작 방법 및 반도체 메모리 장치를 포함하는 메모리 시스템
KR102287907B1 (ko) * 2015-06-22 2021-08-10 삼성디스플레이 주식회사 유기 발광 다이오드 표시 장치의 열화 보상기
KR102467072B1 (ko) * 2017-10-26 2022-11-11 삼성전자주식회사 반복 연산 과정을 이용하여 디코딩을 수행하는 디코더 및 이를 이용한 스토리지 장치
US10514980B2 (en) * 2018-03-22 2019-12-24 Winbond Electronics Corp. Encoding method and memory storage apparatus using the same
CN109496336B (zh) * 2018-10-26 2020-04-28 长江存储科技有限责任公司 用于存储器的数据处理方法和相关数据处理器
KR20200071484A (ko) 2018-12-11 2020-06-19 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 메모리 시스템
CN113160870A (zh) * 2021-03-25 2021-07-23 普冉半导体(上海)股份有限公司 非易失存储器编程方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7542356B2 (en) * 2006-11-01 2009-06-02 Samsung Electronics Co., Ltd. Semiconductor memory device and method for reducing cell activation during write operations
JP2009230796A (ja) * 2008-03-21 2009-10-08 Toshiba Corp 半導体記憶装置及び半導体記憶システム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4134637B2 (ja) 2002-08-27 2008-08-20 株式会社日立製作所 半導体装置
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
CN1492447A (zh) * 2003-09-22 2004-04-28 中兴通讯股份有限公司 一种快闪存储设备的驱动方法
JP2005108304A (ja) 2003-09-29 2005-04-21 Toshiba Corp 半導体記憶装置及びその制御方法
US7106621B2 (en) 2004-06-30 2006-09-12 Stmicroelectronics, Inc. Random access memory array with parity bit structure
JP2006065986A (ja) 2004-08-27 2006-03-09 Fujitsu Ltd 磁気抵抗メモリおよび磁気抵抗メモリ書き込み方法
JP4217208B2 (ja) 2004-12-20 2009-01-28 パナソニック株式会社 Fifoメモリ
US7817462B2 (en) 2005-03-29 2010-10-19 Nec Corporation Magnetic random access memory
JP2008059717A (ja) 2006-09-01 2008-03-13 Kobe Univ 半導体装置
KR20080081656A (ko) 2007-03-06 2008-09-10 한국전자통신연구원 상 변화 메모리에서의 쓰기 전력 감소를 위한 선택적데이터 쓰기 장치 및 방법
KR100819061B1 (ko) 2007-03-06 2008-04-03 한국전자통신연구원 쓰기 전력 계산 및 데이터 반전 기능을 통한 상 변화메모리에서의 데이터 쓰기 장치 및 방법
US7783846B2 (en) 2007-08-09 2010-08-24 International Business Machines Corporation Method, apparatus and computer program product providing energy reduction when storing data in a memory
US20110213995A1 (en) 2007-08-09 2011-09-01 International Business Machines Corporation Method, Apparatus And Computer Program Product Providing Instruction Monitoring For Reduction Of Energy Usage
KR20090016199A (ko) 2007-08-10 2009-02-13 주식회사 하이닉스반도체 상 변화 메모리 장치 및 그 동작방법
KR101281685B1 (ko) 2007-10-04 2013-07-03 삼성전자주식회사 상변화 메모리의 데이터 기록 방법, 데이터 판독 방법, 및그 장치
US9009603B2 (en) 2007-10-24 2015-04-14 Social Communications Company Web browser interface for spatial communication environments
CN101957797B (zh) 2009-07-17 2013-01-09 群联电子股份有限公司 闪速存储器逻辑区块管理方法及其控制电路与储存***
US8432729B2 (en) 2010-04-13 2013-04-30 Mosaid Technologies Incorporated Phase-change memory with multiple polarity bits having enhanced endurance and error tolerance
KR101678407B1 (ko) 2010-05-10 2016-11-23 삼성전자주식회사 데이터 저장 장치 및 그것의 프로그램 방법
US8488363B2 (en) 2010-05-11 2013-07-16 Qualcomm Incorporated Write energy conservation in memory
CN102097125B (zh) 2010-12-07 2013-03-20 清华大学 相变存储器的写操作方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7542356B2 (en) * 2006-11-01 2009-06-02 Samsung Electronics Co., Ltd. Semiconductor memory device and method for reducing cell activation during write operations
JP2009230796A (ja) * 2008-03-21 2009-10-08 Toshiba Corp 半導体記憶装置及び半導体記憶システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160014860A (ko) * 2014-07-29 2016-02-12 삼성전자주식회사 불휘발성 메모리, 데이터 저장 장치, 및 데이터 저장 장치의 동작 방법
KR102234592B1 (ko) 2014-07-29 2021-04-05 삼성전자주식회사 불휘발성 메모리, 데이터 저장 장치, 및 데이터 저장 장치의 동작 방법

Also Published As

Publication number Publication date
KR102049281B1 (ko) 2019-11-27
US9183138B2 (en) 2015-11-10
DE102013111549B4 (de) 2024-04-18
US20140115237A1 (en) 2014-04-24
JP6209051B2 (ja) 2017-10-04
TW201419286A (zh) 2014-05-16
TWI613658B (zh) 2018-02-01
DE102013111549A1 (de) 2014-04-24
CN103778961A (zh) 2014-05-07
KR20140051687A (ko) 2014-05-02
CN103778961B (zh) 2019-06-04

Similar Documents

Publication Publication Date Title
JP6209051B2 (ja) 不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法
JP5503448B2 (ja) 不揮発性メモリー装置、その駆動方法、それを含むメモリーシステム
KR102154296B1 (ko) 저항체를 이용한 비휘발성 메모리 장치의 구동 방법 및 비휘발성 메모리 장치
KR102050896B1 (ko) 메모리 컨트롤러 및 그것의 동작 방법
US8705302B2 (en) Semiconductor memory devices having self-refresh capability
US10431267B2 (en) Electronic device and method for driving the same
KR102446713B1 (ko) 전자 장치
KR20170126595A (ko) 불휘발성 메모리 장치의 독출 방법
KR101984796B1 (ko) 반도체 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법
KR102114875B1 (ko) 반도체 장치, 프로세서, 시스템 및 반도체 장치를 포함하는 테스트 시스템
JP2012142067A (ja) 不揮発性メモリ装置のプログラム方法
CN107274932B (zh) 电子设备
KR20150095360A (ko) 저항성 메모리 장치 및 동작 방법
KR20160124575A (ko) 불휘발성 메모리 장치 및 그것의 프로그램 방법과 독출 방법
KR20140107948A (ko) 반도체 장치 및 이를 포함하는 프로세서와 시스템
KR20180016854A (ko) 반도체 메모리 장치 및 그 동작 방법
KR20180053113A (ko) 반도체장치
JP2022159991A (ja) メモリシステム及びその動作方法
CN108074610A (zh) 阻变存储装置及其读取电路和方法
KR20100120517A (ko) 불휘발성 메모리 장치 및 그것의 워드 라인 또는 비트 라인의 제어방법
US20150124525A1 (en) Semiconductor device and method for operating the same
KR20140088421A (ko) 불휘발성 메모리에 데이터를 프로그램하는 프로그램 방법 및 불휘발성 메모리로부터 데이터를 읽는 읽기 방법
JP2007035163A (ja) 不揮発性半導体記憶装置及び信号処理システム
US9672913B1 (en) Semiconductor memory device and operating method thereof
TWI573135B (zh) 半導體記憶裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160722

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20161222

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20161228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170502

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170731

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170822

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170908

R150 Certificate of patent or registration of utility model

Ref document number: 6209051

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250