IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステム 図1
  • 特開-メモリシステム 図2
  • 特開-メモリシステム 図3
  • 特開-メモリシステム 図4
  • 特開-メモリシステム 図5
  • 特開-メモリシステム 図6
  • 特開-メモリシステム 図7
  • 特開-メモリシステム 図8
  • 特開-メモリシステム 図9
  • 特開-メモリシステム 図10
  • 特開-メモリシステム 図11
  • 特開-メモリシステム 図12
  • 特開-メモリシステム 図13
  • 特開-メモリシステム 図14
  • 特開-メモリシステム 図15
  • 特開-メモリシステム 図16
  • 特開-メモリシステム 図17
  • 特開-メモリシステム 図18
  • 特開-メモリシステム 図19
  • 特開-メモリシステム 図20
  • 特開-メモリシステム 図21
  • 特開-メモリシステム 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024135364
(43)【公開日】2024-10-04
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G11C 11/16 20060101AFI20240927BHJP
   G06F 11/10 20060101ALI20240927BHJP
   H10B 61/00 20230101ALI20240927BHJP
【FI】
G11C11/16 240
G06F11/10 648
G11C11/16 100C
H10B61/00
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2023046001
(22)【出願日】2023-03-22
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】山城 遼
(72)【発明者】
【氏名】白川 政信
【テーマコード(参考)】
4M119
【Fターム(参考)】
4M119BB01
4M119BB20
4M119CC10
4M119DD24
4M119DD33
4M119DD52
4M119EE22
(57)【要約】      (修正有)
【課題】データの誤りへの耐性の高いメモリシステムを提供する。
【解決手段】一実施形態によるメモリシステムは、磁気メモリと、メモリコントローラとを含む。磁気メモリは、第1方向に延びる複数の磁性体を含む。複数の磁性体の各々は、第1方向に並ぶ複数の部分を含む。メモリコントローラは、エンコーダを含む。エンコーダは、複数の第1データセクションから第1符号語を生成する。第1符号語は、複数の第1データセクション及び第1符号語中のランクに基づく数の誤りを訂正する第1誤り訂正符号パリティを含み、複数の列とそれぞれ関連付けられた複数の第1ビット列を含む。複数の第1ビット列の各々は複数の行とそれぞれ関連付けられた複数のビットを含む。メモリコントローラは、複数の第1ビット列を、複数の磁性体に、複数の第1ビット列の各々が複数の磁性体の重複しない1つに書き込まれるように、それぞれ書き込む。
【選択図】図11
【特許請求の範囲】
【請求項1】
第1方向に延びる複数の磁性体を含むメモリであって、前記複数の磁性体の各々は前記第1方向に並ぶ複数の部分を含むメモリと、
複数の第1データセクションから第1符号語を生成するエンコーダであって、前記第1符号語は、前記複数の第1データセクション及び前記第1符号語中のランクに基づく数の誤りを訂正する第1誤り訂正符号パリティを含み、前記第1符号語は、複数の列とそれぞれ関連付けられた複数の第1ビット列を含み、前記複数の第1ビット列の各々は複数の行とそれぞれ関連付けられた複数のビットを含む、エンコーダを含み、
前記複数の第1ビット列を、前記複数の磁性体に、前記複数の第1ビット列の各々が前記複数の磁性体の重複しない1つに書き込まれるように、それぞれ書き込む、
メモリコントローラと、
を備えるメモリシステム。
【請求項2】
前記メモリコントローラは、複数の第1タイプデータを受け取り、
前記複数の第1データセクションは、前記複数の第1タイプデータのそれぞれのセクションの組である、
請求項1に記載のメモリシステム。
【請求項3】
前記メモリコントローラは、第1サイズのデータを最小の単位とする書込みの要求を受け取り、
前記複数の第1タイプデータの各々は、前記第1サイズを有する、
請求項2に記載のメモリシステム。
【請求項4】
前記メモリコントローラは、前記複数の第1タイプデータを前記メモリシステムの外部から受け取る、
請求項3に記載のメモリシステム。
【請求項5】
前記複数の第1ビット列は、n(ただし、nは2以上の整数)個の第1ビット列からなり、
前記複数の第1タイプデータの1つの全てのセクションは、前記複数の第1ビット列のうちのm(ただし、mはn未満の整数)個のビット列に含まれる、
請求項4に記載のメモリシステム。
【請求項6】
前記メモリコントローラは、第1タイプデータを前記メモリシステムの外部から受け取り、
前記複数の第1データセクションのサブセットは、前記第1タイプデータと第2タイプデータとの組のセクションである、
請求項1に記載のメモリシステム。
【請求項7】
前記第2タイプデータは、前記第1タイプデータの巡回冗長検査符号を含む、
請求項6に記載のメモリシステム。
【請求項8】
前記メモリコントローラは、第2符号語を生成し、
前記第2符号語は、前記第2符号語中のランクに基づく数の誤りを訂正する第2誤り訂正符号パリティを含み、複数の列とそれぞれ関連付けられた複数の第2ビット列を含み、
前記複数の第1ビット列の1つ、及び前記複数の第2ビット列の1つから第3符号語を生成し、
第3符号語を前記複数の磁性体の1つに書き込む、
請求項1に記載のメモリシステム。
【請求項9】
前記第2符号語は、BCH符号である、
請求項8に記載のメモリシステム。
【請求項10】
前記第1誤り訂正符号パリティは、各々が前記複数の列のそれぞれに対応する複数の第3ビット列を含み、
前記複数の第1ビット列の各々は、前記複数の第3ビット列の各々を含む、
請求項1に記載のメモリシステム。
【請求項11】
前記メモリは、前記複数の磁性体の1つの第1磁性体の前記複数の部分のうちの前記第1磁性体の第1端に位置する部分に磁化を設定し、前記第1磁性体の前記複数の部分のうちの前記第1磁性体の第2端に位置する部分の磁化の向きに基づいてデータを読み出す、
請求項1乃至10のいずれか1項に記載のメモリシステム。
【請求項12】
前記第1符号語は、ランクメトリック符号の符号語である、
請求項1乃至10のいずれか1項に記載のメモリシステム。
【請求項13】
前記メモリは、前記複数の磁性体の1つの第1磁性体の前記複数の部分のうちの前記第1磁性体の第1端に位置する部分に磁化を設定し、前記第1磁性体の前記複数の部分のうちの前記第1磁性体の第2端に位置する部分の磁化の向きに基づいてデータを読み出し、
前記第1符号語は、ランクメトリック符号の符号語である、
請求項1乃至10のいずれか1項に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
実施形態は、概してメモリシステムに関する。
【背景技術】
【0002】
メモリとメモリコントローラを含んだメモリシステムが知られている。メモリの例は、磁性体の細線を用いた磁気メモリを含む。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第11,347,584号明細書
【非特許文献】
【0004】
【非特許文献1】Ernest M. Gabidulin、“Rank Codes”、TUM. University Press、2021年5月、URL<https://mediatum.ub.tum.de/doc/1601193/1601193.pdf>
【非特許文献2】萩原学、“モダン代数的符号と呼ばれるネットワーク誤り訂正符号”、京都大学数理解析研究所講究録 第1956巻、2015年、p.75-93、URL<https://www.kurims.kyoto-u.ac.jp/~kyodo/kokyuroku/contents/pdf/1956-09.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0005】
データの誤りへの耐性の高いメモリシステムを提供しようとするものである。
【課題を解決するための手段】
【0006】
一実施形態によるメモリシステムは、メモリと、メモリコントローラとを含む。上記メモリは、第1方向に延びる複数の磁性体を含む。上記複数の磁性体の各々は上記第1方向に並ぶ複数の部分を含む。上記メモリコントローラは、エンコーダを含む。上記エンコーダは、複数の第1データセクションから第1符号語を生成する。上記第1符号語は、上記複数の第1データセクション及び上記第1符号語中のランクに基づく数の誤りを訂正する第1誤り訂正符号パリティを含み、複数の列とそれぞれ関連付けられた複数の第1ビット列を含む。上記複数の第1ビット列の各々は複数の行とそれぞれ関連付けられた複数のビットを含む。上記メモリコントローラは、上記複数の第1ビット列を、上記複数の磁性体に、上記複数の第1ビット列の各々が上記複数の磁性体の重複しない1つに書き込まれるように、それぞれ書き込む。
【図面の簡単な説明】
【0007】
図1図1は、第1実施形態のメモリシステムを含んだ情報処理システムの機能ブロックを示す。
図2図2は、第1実施形態のメモリシステムの機能ブロック及び機能ブロックの接続を示す。
図3図3は、第1実施形態のメモリシステムの磁気メモリの機能ブロック及び機能ブロックの接続を示す。
図4図4は、第1実施形態のメモリシステムのメモリセルアレイの構成要素を示す。
図5図5は、第1実施形態のメモリシステムのメモリセルアレイの一部の構造の例を示す。
図6図6は、第1実施形態のメモリシステムの磁性体の構造の例を示す。
図7図7は、第1実施形態のメモリシステムの誤り訂正回路の機能ブロックを示す。
図8図8は、第1実施形態のメモリシステムの一部の或る動作の間の変化を示す。
図9図9は、第1実施形態のメモリシステムで使用される誤り訂正符号の符号語の生成において使用される単位を概念的に示す。
図10図10は、第1実施形態のメモリシステムで使用される符号語の幾つかのパラメータを示す。
図11図11は、第1実施形態のメモリシステムでのデータが記憶される領域の例を示す。
図12図12は、第1実施形態のメモリシステムでの第1タイプ符号語の生成のための情報データの分割を概念的に示す。
図13図13は、第1実施形態のメモリシステムでのユーザーデータの記憶のためのデータに対する操作を概念的に示す。
図14図14は、第1実施形態のメモリシステムでのエンコードによって生成されるデータの第1例を示す。
図15図15は、第1実施形態のメモリシステムでのエンコードによって生成されるデータの第2例を示す。
図16図16は、第1実施形態のメモリシステムでのエンコードによって生成されるデータの例を示す。
図17図17は、第1実施形態のメモリシステムでのデコードによって生成されるデータの例を示す。
図18図18は、第1実施形態のメモリシステムでのデコードによって生成されるデータの例を示す。
図19図19は、第1実施形態のメモリシステムでの或る動作のフローを示す。
図20図20は、第1実施形態のメモリシステムでの或る動作のフローを示す。
図21図21は、磁壁メモリでの意図と異なる磁壁シフトの第1パターンを示す。
図22図22は、磁壁メモリでの意図と異なる磁壁シフトの第2パターンを示す。
【発明を実施するための形態】
【0008】
以下に実施形態が図面を参照して記述される。或る実施形態又は相違する実施形態での略同一の機能及び構成を有する複数の構成要素は、互いに区別されるために、参照符号の末尾にさらなる数字又は文字が付加される場合がある。
【0009】
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれか又は両者を組み合せたものとして実現されることが可能である。また、各機能ブロックが、以下の例のように区別されていることは必須ではない。一部の機能が、例示の機能ブロックとは別の機能ブロックによって実行されてもよいし、細かい機能サブブロックに分割されていてもよい。
【0010】
実施形態の方法のフローにおけるいずれのステップも、例示の順序に限定されず、そうでないと示されない限り、例示の順序とは異なる順序で及び(又は)別のステップと並行して起こることが可能である。
【0011】
本明細書及び特許請求の範囲において、或る第1要素が別の第2要素に「接続されている」とは、第1要素が直接的又は常時或いは選択的に導電性となる要素を介して第2要素に接続されていることを含む。
【0012】
1.第1実施形態
1.1.構成(構造)
1.1.1.情報処理システム
図1は、第1実施形態のメモリシステムを含んだ情報処理システムの機能ブロックを示す。情報処理システム100は、メモリシステム1及びホスト装置5を含む。
【0013】
メモリシステム1は、データを記憶するシステムである。メモリシステム1は、ホスト装置5からデータの書込みの要求を受け取り、要求されたデータを記憶する。メモリシステム1は、ホスト装置5からデータの読出しの要求を受け取り、要求されたデータをホスト装置5に送信する。
【0014】
ホスト装置5は、Uバイトのサイズの単位でデータの読出し及びデータの書込みをメモリシステム1に要求する。Uは、正の整数である。以下、Uバイトは、セクタと称される場合がある。
【0015】
1.1.2.メモリシステム
図2は、第1実施形態のメモリシステム1の機能ブロック及び機能ブロックの接続を示す。図2に示されるように、メモリシステム1は、磁気メモリ2及びメモリコントローラ3を含む。
【0016】
磁気メモリ2は、磁化を利用して不揮発にデータを記憶する装置である。磁気メモリ2は、複数の磁区を有する磁性体を含み、磁区の磁化の向きを使用してデータを記憶する。磁区は、磁壁により囲まれた領域である。磁気メモリ2は、指定されるアドレスのメモリセルMCにデータを記憶するため、及び指定されるアドレスのメモリセルMCからデータを読み出すために、磁壁をシフトする。磁気メモリ2のような、磁区を使用してデータを記憶し、磁壁をシフトする磁気メモリは、磁壁シフトメモリ、又はレーストラックメモリと称され得る。
【0017】
メモリコントローラ3は、磁気メモリ2を制御するコントローラである。メモリコントローラ3は、ホスト装置5からの要求に基づくデータの読出し及びデータの書込みを実行するための制御を磁気メモリ2に対して行う。
【0018】
メモリコントローラ3は、ホストインターフェース31、ROM(read only memory)32、RAM(random access memory)33、CPU(central processing unit)34、メモリインターフェース35、及び誤り訂正回路36などの機能ブロックを含む。
【0019】
メモリコントローラ3は、実行している動作に基づいて、エンコード制御部、デコード制御部、誤り訂正制御部、書込み制御部、読出し制御部、信号送信制御部、及び信号受信制御部等のサブ部分として機能する。誤り訂正制御部は、誤り訂正のために行われる処理の全体を制御し、データの分割、データの結合、データの一時的記憶、データの供給、エンコード制御部の制御、及びデコード制御部の制御を行う。エンコード制御部は、エンコードを制御する。デコード制御部は、デコードを制御する。書込み制御部は、磁気メモリ2へのデータの書込みのための処理を制御し、磁気メモリ2に書き込まれるデータの用意、書込みのためのコマンドCMD及びアドレス情報ADDの生成を行う。読出し制御部、磁気メモリ2からのデータの読出しのための処理を制御し、磁気メモリ2から読み出されるデータに基づいて、読出しのためのコマンドCMD及びデータを特定するアドレス情報ADDの生成を行う。信号送信制御部は、磁気メモリ2へのデータDAT、コマンドCMD、アドレス情報ADD、及び制御信号CNTを含む信号の送信を制御し、メモリインターフェース35を制御する。信号受信制御部は、磁気メモリ2からのデータDAT及び制御信号CNTを含む信号の受信を制御し、メモリインターフェース35を制御する。
【0020】
ホストインターフェース31は、メモリコントローラ3がホスト装置5と通信するためのインターフェースである。ホストインターフェース31は、ハードウェア、又はハードウェアとソフトウェアの組合せからなることが可能である。ホストインターフェース31は、ホストインターフェース31とホスト装置5が準拠する方式(又は、規格)の通信を可能にするための配線によってホスト装置5と接続されている。
【0021】
ROM32は、不揮発性のメモリである。ROM32は、ファームウェアを含むプログラムを記憶する。
【0022】
RAM33は、揮発性のメモリである。RAM33は、データを一時的に記憶し、メモリシステム1が電源の供給を受けている間、ROM32に記憶されているプログラムを記憶する。RAM33の例は、DRAM(Dynamic Random Access Memory)を含む。RAM33はまた、メモリコントローラ3が動作している間、ワーキングメモリとして機能する。
【0023】
CPU34は、メモリコントローラ3の全体の動作を制御する回路である。ROM32に記憶されているとともにRAM33上にロードされたプログラムがCPU34によって実行されることによって、メモリコントローラ3は種々の動作を実行し、種々のサブ部分として機能する。ファームウェアは、CPU34に、実施形態において記述される動作を行わせることができるように構成されている。
【0024】
メモリインターフェース35は、メモリコントローラ3が磁気メモリ2と通信するためのインターフェースである。メモリインターフェース35は、ハードウェア、又はハードウェアとソフトウェアの組合せからなることが可能である。メモリインターフェース35は、磁気メモリ2とメモリコントローラ3が準拠する方式の通信を可能にするための配線によって磁気メモリ2と接続されている。メモリインターフェース35は、コマンドCMD及びアドレス情報ADDを磁気メモリ2に送信する。メモリインターフェース35は、制御信号CNT及びデータDATを磁気メモリ2に送信し、制御信号CNT及びデータDATから受信する。
【0025】
コマンドCMDは、磁気メモリ2が実行すべき動作を示す。アドレス情報ADDは、磁気メモリ2中の1又は複数のメモリセルMCを特定し、メモリセルMCのロウアドレス及びカラムアドレスを含む。制御信号CNTは、磁気メモリ2とメモリコントローラ3との間の動作タイミング及び磁気メモリ2の内部の動作のタイミングを制御するための信号である。
【0026】
誤り訂正回路36は、誤り訂正符号(Error Correction Code, ECC)を使用して、磁気メモリ2に書き込まれるデータ及び磁気メモリ2から読み出されたデータの誤りを検出及び訂正する。誤り訂正回路36は、磁気メモリ2に書き込まれるデータから誤り訂正符号のパリティ(誤り訂正符号パリティ)を生成する。誤り訂正符号パリティが生成される対象のデータは、以下、情報データと称される場合がある。誤り訂正回路36は、書き込まれる情報データに対して、この情報データから生成された、誤り訂正符号パリティを付加する。誤り訂正回路36は、誤り訂正回路36が受け取った情報データの或る大きさのセクションごとに誤り訂正符号パリティを生成する。或る情報データと、この情報データから生成された誤り訂正符号パリティとの組は、符号語と称される。符号語は、磁気メモリ2に書き込まれる。誤り訂正回路36は、誤り訂正符号パリティを使用して、磁気メモリ2から読み出されたデータの中に誤りがある場合に誤りを訂正し、誤りを訂正された情報データを生成する。誤り訂正回路36は、独立した専用の半導体チップとして実現されていてもよいし、半導体基板に形成された回路であってもよいし、CPU34がファームウェアを実行することにより実現されてもよい。
【0027】
1.1.3.磁気メモリ
図3は、第1実施形態のメモリシステムの磁気メモリの機能ブロック及び機能ブロックの接続を示す。図3に示されるように、磁気メモリ2は、メモリセルアレイ21、及び制御回路22などの機能ブロックを含む。
【0028】
メモリセルアレイ21は、複数のストリングSTRを含む。各ストリングSTRは、複数のメモリセルMCを含む。各メモリセルMCは、1ビットのデータを不揮発に記憶することができ、磁性体を含む。メモリセルアレイ21中には、複数のソース線SL、複数のビット線BL、及び複数のフィールド線FLなどの配線も位置している。配線は、図3では、示されていない。
【0029】
制御回路22は、磁気メモリ2の動作を制御する回路である。制御回路22は、メモリコントローラ3から、制御信号CNT、コマンドCMD、アドレス情報ADD、及びデータDATを受け取る。制御回路22は、制御信号CNT及びデータDATをメモリコントローラ3に送信する。データDATは、磁気メモリ2でのデータ書込みの場合は、書込みデータである。データDATは、磁気メモリ2からのデータ読出しの場合は、読出しデータである。制御回路22は、制御信号CNTによって指示される制御及びコマンドCMDに基づいて、メモリセルアレイ21へのデータの書込み、メモリセルアレイ21からのデータの読出しを制御する。制御回路22は、入出力回路、シーケンサ、ステートマシーン、コントローラ、コマンドデコーダ、アドレスデコーダ、ラッチ回路、ドライバ、電圧生成回路、マルチプレクサ、及びスイッチ回路などのサブ部分を含む。
【0030】
1.1.4.メモリセルアレイ
図4は、第1実施形態のメモリシステムのメモリセルアレイの構成要素の例を示す。図4に示されるように、メモリセルアレイ21は、ストリングSTR_0~STR_Nを含む。Nは、正の整数である。各ストリングSTRは、Q個のメモリセルMC_0~MC_Q-1を含む。Qは正の整数である。各ストリングSTRにおいて、このストリングSTRのメモリセルMCは、1つの磁性体の細線の一部からなる。
【0031】
図5は、第1実施形態のメモリシステムのメモリセルアレイの一部の構造の例を示す。図5は、xyz直交座標系を使用する。x軸のより大きい座標に向かう向きは、x方向と称される場合がある。y軸のより大きい座標に向かう向きは、y方向と称される場合がある。z軸のより大きい座標に向かう向きは、z方向と称される場合がある。「下」との記述及びその派生語並びに関連語は、z軸のより小さい座標の位置を指し、「上」との記述及びその派生語並びに関連語は、z軸のより大きい座標の位置を指す。
【0032】
図5に示されるように、メモリセルアレイ21は、複数の磁性体UT及び複数の積層体LSを含む。また、メモリセルアレイ21には、複数の導電体41、複数の導電体42、及び複数の導電体43が位置している。
【0033】
磁性体UTは、x方向及びy方向に並ぶ。磁性体UTは、線状の形状を有し、z方向に延びる。各磁性体UTは、1つのストリングSTRとして機能する。磁性体UTは、複数の単位部分MLを含む。各単位部分MLは、磁性体UTの延びる方向に1つずつ並び、隣の単位部分MLと接する。
【0034】
各積層体LSは、複数の磁性体及び複数の絶縁体を含む。複数の磁性体及び複数の絶縁体は、各々、層の形状を有し、z方向に並ぶ。各積層体LSは、スイッチング素子として機能する構造と、MTJ(Magnetic Tunneling Junction)素子として機能する構造を含む。MTJ素子として機能する構造は、スイッチング素子として機能する構造の上面上に位置する。各積層体LSは、上面において、1つの磁性体UTの下面と接する。MTJ素子として機能する構造は、MTJを含み、2つの強磁性体及び2つの強磁性体の間の絶縁体を含む。スイッチング素子として機能する構造は、スイッチング素子の両端の電気的な導通及び非導通を制御する。
【0035】
導電体41は、積層体LSの組よりもz方向と反対の方向に位置する。導電体41は、x方向に延び、y方向に並ぶ。各導電体41は、1つのソース線SLとして機能する。各導電体41は、y方向に並ぶ複数の積層体LSの下面と接続されている。
【0036】
導電体42は、磁性体UTの組よりもz方向に位置する。導電体42は、x軸及びy軸からなる面(すなわち、xy面)に沿うとともに、x軸及びy軸と交わる方向に延びる。導電体42は、xy面に沿うとともに、xy面と交わる方向、例えば、xy面と直交する方向に並ぶ。各導電体42は、1つのビット線BLとして機能する。各導電体42は、1つの導電体41と接続されている複数の磁性体UTとは異なる複数の磁性体UTのそれぞれの上面と接続されている。
【0037】
導電体43は、x方向に延びる。各導電体43は、x方向に並ぶ複数の磁性体UTのそれぞれの上端に位置する単位部分MLに沿って延びる。各導電体43は、x方向に並ぶ複数の磁性体UTのそれぞれの上端に位置する単位部分MLと間隔を有する。各導電体43は1つのフィールド線FLとして機能する。データの書込みの間に導電体43を電流が流れることにより、導電体43の周囲に磁場が発生する。この磁場は、導電体43と間隔を有して並ぶ単位部分MLに、磁場の向きに基づく向きの磁化を持たせる。
【0038】
図6は、第1実施形態のメモリシステムの磁性体UTの構造の例を示す。磁性体UTは、図5を参照して上記されているように複数の単位部分MLを含み、例として、Q+1個の単位部分ML_0~ML_Qを含む。隣接する各2つの単位部分MLの境界は、他の位置でのxy面積よりも小さいxy面積を有する。xy面積は、xy面に沿った面における面積である。単位部分MLの各境界でのxy面積が小さいことにより、磁壁は、単位部分MLの境界において、他の位置よりも留まりやすい。磁壁が単位部分MLの境界に留まりやすいことに基づいて、各単位部分ML中に磁区が形成される。各磁区は、磁化を有する。磁化は、相違する2つの方向のいずれかを有する。磁化の方向は、磁気メモリ2による制御によって可変である。図6は、理解のしやすさから、各単位部分MLが1つの磁区を有する形態を示す。しかしながら、隣り合う2つ以上の単位部分MLが同じ方向の磁化を有する場合、これらの単位部分MLからなる領域は、単一の磁区を有し、磁壁を含まない。
【0039】
磁気メモリ2は、隣り合う2つの単位部分MLのそれぞれの磁化の向きの組合せによって1ビットのデータを記憶する。すなわち、隣り合う2つの単位部分MLは、1つのメモリセルMCとして機能する。隣り合う2つの部分のそれぞれの磁化の向きが平行(又は、同じ)であるか、反平行である(又は、異なる)かに基づいて、1ビットのデータが記憶される。
【0040】
1.1.5.誤り訂正回路
図7は、第1実施形態のメモリシステムの誤り訂正回路の機能ブロックを示す。図7に示されるように、誤り訂正回路36は、エンコーダ361及びデコーダ362を含む。
【0041】
エンコーダ361は、第1タイプエンコーダ3611、第2タイプエンコーダ3612、及びデータバッファ3613を含む。
【0042】
第1タイプエンコーダ3611は、第1タイプエンコーダ3611によって受け取られたデータに対して、第1タイプのエンコードを行う。第1タイプエンコーダ3611は、メモリコントローラ3中のエンコーダ361以外の構成要素、例えば、RAM33から、情報データを受け取る。情報データは、磁気メモリ2に書き込まれるデータであり、ホスト装置5から送信された書込み要求の対象のデータ及びメタデータを含む。書込み要求対象データは、情報処理システム100のユーザがメモリシステム1に記憶することを望むデータ(ユーザーデータ)であり、ホスト装置5からメモリシステム1への書込みを要求されているデータ又はその一部である。メタデータは、或るユーザーデータに関する情報を含み、或るユーザーデータと関連付けられている。第1タイプエンコーダ3611は、受け取られた情報データに対して第1タイプエンコードを行って受け取られたデータの符号語を生成し、生成された符号語を出力する。第1タイプエンコードによって生成される符号語は、第1タイプの誤り訂正符号のパリティ(以下、第1タイプ誤り訂正符号パリティと称される場合がある)を含み、以下、第1タイプ符号語と称される場合がある。第1タイプ符号語は、データバッファ3613に供給される。一例において、第1タイプエンコーダ3611は、第1タイプエンコーダ3611中の図示せぬRAM及び(又は)RAM33を使用して、エンコードを行う。
【0043】
第1タイプエンコードは、第1タイプ誤り訂正符号パリティの生成方法によるエンコードであり、第1タイプ誤り訂正符号パリティを生成する。第1タイプ誤り訂正符号パリティは、ランクメトリック符号の符号語の一部を構成する構成する、誤り訂正符号のパリティである。ランクメトリック符号は、線形符号であり、誤りビットの数、すなわち、ハミング距離、でなく、ランク距離に基づく。すなわち、ランクメトリック符号を使用する誤り訂正は、或るランク距離以下の数のランクの誤りを訂正できる。ランクメトリック符号は、ランク誤り訂正符号とも称される。ランクメトリック符号の例は、Gabidulin符号を含む。ランクメトリック符号については、後述される。
【0044】
第2タイプエンコーダ3612は、第2タイプエンコーダ3612によって受け取られたデータに対して、第2タイプのエンコードを行う。第2タイプエンコーダ3612は、データバッファ3613からデータを受け取る。受け取られるデータは、第1タイプ符号語である。第2タイプエンコーダ3612は、受け取られた第1タイプ符号語に対して第2タイプエンコードを行って、受け取られたデータの符号語を生成し、生成された符号語を出力する。第2タイプエンコードによって生成される符号語は、第2タイプの誤り訂正符号のパリティ(以下、第2タイプ誤り訂正符号パリティと称される場合がある)を含み、以下、第2タイプ符号語と称される場合がある。第2タイプ符号語は、直接、又は、RAM33において一時的に記憶された後にメモリインターフェース35に送信される。メモリインターフェース35によって受け取られた第2タイプ符号語は、書込みデータの一部又は全体を構成し、磁気メモリ2に書き込まれる。一例において、第2タイプエンコーダ3612は、第2タイプエンコーダ3612中の図示せぬRAM及び(又は)RAM33を使用して、エンコードを行う。
【0045】
第2タイプエンコードは、第2タイプの誤り訂正符号の符号語の生成方法によるエンコードであり、第2タイプの誤り訂正符号パリティを生成する。第2タイプ誤り訂正符号は、ハミング距離に基づく誤りを訂正する。第2タイプ誤り訂正符号の例は、BCH(Bose - Chaudhuri - Hocquenghem)符号を含む。
【0046】
デコーダ362は、第1タイプデコーダ3621、第2タイプデコーダ3622、及びデータバッファ3623を含む。
【0047】
第2タイプデコーダ3622は、第2タイプデコーダ3622によって受け取られたデータに対して、第2タイプのデコードを行う。第2タイプデコーダ3622は、メモリコントローラ3中のデコーダ362以外の構成要素、例えば、RAM33又はメモリインターフェース35から、データを受け取る。受け取られるデータは、磁気メモリ2から送信された読出しデータであり、第2タイプ符号語である。第2タイプデコーダ3622は、受け取られた第2タイプ符号語に対して第2タイプデコードを行って第2タイプ符号語の情報データを生成し、生成された情報データを出力する。第2タイプデコードは、第2タイプ誤り訂正符号を使用するデコードであり、第2タイプ符号語の情報データを生成する。生成された情報データは、データバッファ3623に供給される。一例において、第2タイプデコーダ3622は、第2タイプデコーダ3622中の図示せぬRAM及び(又は)RAM33を使用して、デコードを行う。
【0048】
第1タイプデコーダ3621は、第1タイプデコーダ3621によって受け取られたデータに対して、第1タイプのデコードを行う。第1タイプデコーダ3621は、データバッファ3623から、データを受け取る。受け取られるデータは、第1タイプ符号語である。第1タイプデコーダ3621は、受け取られた第1タイプ符号語に対して第1タイプデコードを行って第1タイプ符号語の情報データを生成し、生成された情報データを出力する。生成された情報データは、読出し要求対象データの少なくとも一部を含む。読出し要求データは、情報処理システム100のユーザがメモリシステム1から読み出すことを望むデータ(ユーザーデータ)であり、ホスト装置5からメモリシステム1からの読出しを要求されているデータ又はその一部である。第1タイプデコードは、第1タイプ誤り訂正符号を使用するデコードであり、第1タイプ符号語の情報データを生成する。一例において、第1タイプデコーダ3621は、第1タイプデコーダ3621中の図示せぬRAM及び(又は)RAM33を使用して、デコードを行う。
【0049】
1.2.動作
図8は、第1実施形態のメモリシステムの一部の或る動作の間の変化を示す。具体的には、図8は、磁気メモリ2でのデータの読出し及び書込みのための磁壁のシフトを示し、1つの磁性体UT、及びこの磁性体UTと関連する構成要素を示す。
【0050】
或る磁性体UTに書き込まれる1ビットのデータは、この磁性体UTの上端、すなわち、導電体42と接続された単位部分MLにデータの値に基づく磁化を持たせることによって行われる。この磁性体UTにさらに1ビットのデータが書き込まれるとき、磁性体UTの全ての磁壁が、積層体LSに向かってシフトされる。磁区の連なりのパターン、すなわち、メモリセルMCに記憶されているビットのデータの連なりが保持されたまま、磁壁の全体がシフトする。
【0051】
或るメモリセルMCの1ビットのデータは、このメモリセルMCのデータ記憶の機能の一部を提供する磁化を有する上側の単位部分MLが磁性体UTの下端、すなわち、積層体LSと接している間に読み出される。その目的で、読出しの対象のデータを記憶しているメモリセルMCのデータ記憶の機能の一部を提供する上側の単位部分MLは、データ読出しのとき、磁性体UTの下端までシフトされる。磁区の連なりのパターン、すなわち、メモリセルMCに記憶されているビットのデータの連なりが保持されたまま、磁壁の全体がシフトする。
【0052】
このように、磁気メモリ2では、シフトレジスタと同様に、先入れ先出し(First In First Out; FIFO)の形態でデータの書込み及び読出しが行われる。
【0053】
図9は、第1実施形態のメモリシステムで使用される誤り訂正符号の符号語の生成において使用される単位を概念的に示す。具体的には、図9は、ランクメトリック符号で使用されるランクについて示す。
【0054】
図9に示されるように、ランクメトリック符号は、ガロア拡大体GF(q)のシンボルがN個並んだ配列を有する。NはM以下であり、qは素数のべき乗である。ランクメトリック符号は、GF(q)の要素をN行×M列の行列状に並べたものとみなされる。すなわち、図9は、M=JかつN=Jのランクメトリック符号を例として示す。行列に対して、GF(q)上でのランクが定義される。2つの符号語の差のランクは、2つの符号語のランク距離として定義される。全ての相違する符号語の間のランク距離の最小値として、ランクメトリックでの最小距離dが決まる。より具体的には、以下の通りである。以下の記述は、q=2の例に基づく。
【0055】
ランクメトリック符号は、2次元の行列状に配列された1ビットデータの集合を使用し、ランクという単位を使用する。ランクメトリック符号は、Jを2以上の整数としてJ行×J列の行列に配列されたデータとして形成される。すなわち、ランクメトリック符号の各ビットは、第1次元上の位置を示す値(又は、座標或いはインデックス)と第2次元上の位置を示す値(又は、座標)とに関連付けられており、第1次元上の位置を示す値と第2次元上の位置を示す値を示す属性を付与されている。以下、2つの次元の一方は2次元行列の行に関連付けられ、他方は2次元行列の列に関連付けられる。すなわち、一方の次元での位置を示す値は、行を特定するインデックスと関連付けられ、他方の次元での位置を示す値は、列を特定するインデックスと関連付けられる。
【0056】
ハッチングを付された桝中のビットは、誤った値を含んでいる。誤りの程度は、ランクメトリック符号では、誤りビットを含んだ行の行中の誤りビットのパターンの数によって表される。
【0057】
図9の例の行列Aは、第1行、第2行、第4行、及び第6行において、共通のビットの値の並びからなるパターンP1を含む。第3行は、2つの相違するパターンP1及びP2に分解されることが可能である。よって、行列Aの誤りを含んだビットの分布は、2つのパターンP1及びP2によって表現されることが可能である。このことに基づいて、行列Aは、誤りを含んだビットの2つのパターンを含み、すなわち、2ランクの誤りを含むと評価される。この、2ランクの誤りは、エラービット数に基づく場合の12ビットのエラーと異なる。
【0058】
行列Bは、行列Aと大きく異なる誤りビットの分布を有する。しかしながら、行列Bの誤りを含んだビットの分布も、パターンP1及びP2によって表現されることが可能である。このことに基づいて、行列Bも、2ランクの誤りを含むと評価される。
【0059】
図10は、第1実施形態のメモリシステムで使用される符号語の幾つかのパラメータを示す。tを1以上の整数として、ランクメトリック符号を使用してtランクの誤りが訂正されることを可能にするために、互いに異なる2つの符号語の間のランク距離は、少なくとも、d=2t+1である必要がある。すなわち、必要な最小のランク距離はdである。この距離を確保するために、J行×J列のランクメトリック符号の符号語は、(d-1)×Mビットの誤り訂正符号パリティを含んでいる必要がある。このような誤り訂正符号を含むランクメトリック符号の例は、以下の通りである。すなわち、図10に示されるように、J行×J列のランクメトリック符号の符号語、すなわち、第1タイプ符号語は、tランクの誤りが訂正されることを可能にするために、2t行×J列の誤り訂正符号パリティを含む。よって、ランクメトリック符号の符号語は、(J-2t)行×J列の情報データを含み、すなわち、情報データの符号長は(J-2t)×Jである。ランクメトリック符号については、例えば、Gabidulin, Ernst M. (1985) "Theory of codes with maximum rank distance". Problems of Information Transmission. 21 (1): 1-12に記載されている。
【0060】
図11は、第1実施形態のメモリシステムでのデータが記憶される領域の例を示す。図11に示されるように、ランクメトリック符号の符号語は、ビットの列ごとに、メモリセルアレイ21中の或る1つの領域に記憶される。ランクメトリック符号の符号語の列、すなわち、第1タイプ符号語の列は、以下、第1タイプ符号語列セクションCWCと称される場合がある。各第1タイプ符号語列セクションCWCは、1つのストリングSTRの一部に記憶される。各ストリングSTRのうちの、1つの第1タイプ符号語列セクションCWCを記憶する部分は、以下、ストリングセクションSTRSと称される場合がある。ストリングセクションSTRSは、Jビットの連続するメモリセルMCの組として機能する。1つの第1タイプ符号語の相違する複数の第1タイプ符号語列セクションCWCは、それぞれ、相違する複数のストリングSTRに、1つずつ記憶される。
【0061】
図12は、第1実施形態のメモリシステムでの第1タイプ符号語の生成のための情報データの分割を概念的に示す。図12は、1セクタのユーザーデータについて示す。
【0062】
以下の記述における値Zは、1つのストリングSTRのうち、第1タイプ符号語の記憶に使用さるビットの数、すなわち、メモリセルMCの数を指し、1以上の整数である。すなわち、図7を参照して上記されているように、第1タイプ符号語は第2タイプエンコードを受けて、第2タイプ訂正符号語が生成される。1つの第2タイプ符号語は、1つのストリングSTRに書き込まれる。よって、1ストリングSTR中のQビットは、Zビットにおいて第1タイプ符号語を記憶し、(Q-Z)ビットにおいて、第2タイプ誤り訂正符号パリティを記憶する。
【0063】
以下の記述における値Fは、1セクタのユーザーデータが書き込まれるストリングSTRの数を指し、1以上の整数である。
【0064】
図12及び図12についての記述は、各第1タイプ符号語中で、1ランクの誤りの訂正を可能にする方法の例、すなわち、t=1の例に基づく。よって、各第1タイプ符号語は、2行の第1タイプ誤り訂正符号パリティを含む。tが1を超えるケースは、以下の記述中のtの具体例として1が使用されている箇所の1及びt=1に基づく値が変更されることにより、当業者によって理解されることが可能である。
【0065】
ユーザーデータは、J行×J列の第1タイプ符号語を生成するために、複数のセクションに分割され、セクションを使用して第1タイプ符号語が生成される。そして、図11を参照して上記されているように、各第1タイプ符号語列セクションCWCが1つのストリングセクションSTRSに書き込まれる。しかしながら、1セクタ、t、及びJのそれぞれの大きさに基づいて、ユーザーデータの全体がJビットで割り切られない場合がある。この場合、生成される第1タイプ符号語の組のそれぞれの第1タイプ符号語列セクションCWCの集合の大きさがJビットの倍数になるように、第1タイプ符号語が生成される対象がリサイズされることが可能である。リサイズの例は、以下に記述されるように、UバイトのユーザーデータとMバイトのメタデータとからなる情報データSDを生成することを含む。以下、情報データSDのうちの同サイズの複数部分は、情報データセクションSDSと称される場合がある。Mは、UバイトのユーザーデータとMバイトのメタデータからなる情報データSDの情報データセクションSDSの第1タイプ符号語列セクションCWCがJビットとなるように決定される。すなわち、(U+M)×8×(J/(J-2t))をJ又はJの倍数にするMが決定される。メタデータの例は、巡回冗長検査(Cyclic Redundancy Check; CRC)符号を含む。
【0066】
(U+M)バイトの情報データSDの情報データセクションSDSがJビットのストリングセクションSTRSに書き込まれるために、K個のストリングセクションSTRSが必要である。Kは、(U+M)×8×(J/(J-2t))/Jであり、1以上の整数である。
【0067】
K個のストリングセクションSTRSでの記憶のために、Z(すなわち、1ストリングSTR中の第1タイプ符号語を記憶するビットの数)に基づいて、F本のストリングSTRが必要である。すなわち、Z×F=Kである。こうして、1セクタのユーザーデータの第1タイプ符号語の記憶に使用されるM(すなわち、メタデータのサイズ)、及びF(すなわち、ストリングSTRの数)が決定される。
【0068】
Z/J個の情報データセクションSDSの各組が、F個のストリングのうちの1個のストリングSTRに記憶される。
【0069】
次に、図13を参照して、ユーザーデータの磁気メモリへの書込みについて記述される。図13は、第1実施形態のメモリシステムでのユーザーデータの記憶のためのデータに対する操作を概念的に示す。
【0070】
図12を参照して上記されているように、メモリコントローラ3は、1セクタ、すなわち、Uバイトのユーザーデータの書込みのために、Mバイトのメタデータを生成し、(U+M)バイトの情報データSDを生成する。
【0071】
図13に示されるように、メモリコントローラ3は、情報データSDを、Jビットのサイズの情報データセクションSDSに分割する。分割により、K個の情報データセクションSDSが生成される。
【0072】
図12を参照して上記されているように、1セクタのユーザーデータがF個のストリングSTRに書き込まれる。このことに基づいて、列の方向においてJビットのサイズを有する第1タイプ符号語の生成のために、計J/F個のユーザーデータの各々に対して、K個の情報データセクションSDSの生成のための処理が行われる。
【0073】
メモリコントローラ3は、第1タイプエンコーダ3611を使用して、J/F個のユーザーデータのうちのJ個の情報データセクションSDSの各組に対して第1タイプエンコードを行う。以下、第1タイプエンコードが行われる対象であるJ個の情報データセクションSDSの組は、情報データセクションセットSDSSと称される場合がある。情報データセクションセットSDSSは、(J-2t)×Jビットの情報長を有する。第1タイプエンコードの結果、1つの第1タイプ符号語が生成される。第1タイプ符号語は、J×Jビットのサイズを有する。
【0074】
同様にして、メモリコントローラ3は、第1タイプエンコーダ3611を使用して、残りの全ての情報データセクションセットSDSSから第1タイプ符号語を生成する。この結果、Z/J個の第1タイプ符号語が得られる。
【0075】
メモリコントローラ3は、第2タイプエンコーダ3612を使用して、Z/J個の第1タイプ符号語の組から複数の第2タイプ誤り訂正符号パリティを生成する。すなわち、第2タイプエンコーダ3612は、第1タイプ符号語の組のうちの1つのストリングSTRに書き込まれる部分、すなわち、第1タイプ符号語の組のうちの1つのストリングSTRに書き込まれる複数の第1タイプ符号語列セクションCWCの組に対して第2タイプエンコードを行う。第1タイプ符号語列セクションCWCの組を使用する第2タイプエンコードによって、この第1タイプ符号語列セクションCWCの組及び第2タイプ誤り訂正符号パリティを含んだ第2タイプ符号語が生成される。
【0076】
同様にして、メモリコントローラ3は、第2タイプエンコーダ3612を使用して、第1タイプ符号語の組のうちの残りの全ての第1タイプ符号語列セクションCWCの組のそれぞれを含んだ複数の第2タイプ符号語を生成する。これにより、J個の第2タイプ符号語が得られる。J個の第2タイプ符号語は、J個の第2タイプ誤り訂正符号パリティの組を含む。メモリコントローラ3は、こうして得られたJ個の第2タイプ符号語を、書込みデータとして使用して、磁気メモリ2に書き込む。各第2タイプ符号語は、1つのストリングSTRに書き込まれる。
【0077】
図14図15、及び図16は、第1実施形態のメモリシステムでのエンコードによって生成されるデータの例を示す。図14図15、及び図16は、U、J、及びZの種々のケースについて示す。図14図15、及び図16は、それぞれ、第1、第2、及び第3ケースを示す。
【0078】
図14は、Uが512、Jが32、Zが1120の例を示す。ZはJの倍数である。図14に示されるように、Uが512であることに基づいて、一例において、Mは13であり、すなわち、13バイトのメタデータが使用される。よって、1セクタのユーザーデータを含んだ情報データSDは、525バイトのサイズを有する。Mは、この例に限られず、図12を参照して上記されている条件を満たせばよく、U=512、J=32、t=1の例に基づくと、(512+M)×8の積が30(=J-2t)で割り切られることを可能にする数、すなわち、(512+M)×8/30を整数とする値であればよい。そのような最小のMは13であり、Mは、nを正の整数として、13+15nであればよい。
【0079】
525バイトの情報データSDから生成されるサイズの第1タイプ符号語が32ビットのストリングセクションSTRSに書き込まれるために必要なストリングセクションSTRSの数は、K=525×8×(32/(32-2t))=4480である。
【0080】
Zが1120であるため、F=4480/1120=4であり、すなわち、1セクタのユーザーデータの第1タイプ符号語の記憶は、4個のストリングSTRを必要とする。Fが予め決定されていて、Fに基づいて、Zが決定されてもよい。
【0081】
1つのユーザーデータの記憶に4個のストリングSTRが必要であることに基づいて、第1タイプ符号語の生成のために、8個のユーザーデータが必要である。8は、J/F=32/4に基づく。
【0082】
ユーザーデータからの第2タイプ符号語の組の具体的な生成は、以下の通りである。すなわち、8個のユーザーデータが集められる。8個の512バイトのユーザーデータの各々に13バイトのメタデータが付加されることにより、8個の525バイトの情報データが生成される。8個の情報データSDの組は、4480個の情報データセクションSDSに分割される。8個の情報データSDの組うちの計32個の情報データセクションSDSから情報データセクションセットSDSSが形成される。Zが1120であるため、35個の情報データセクションセットSDSSが形成される。35は、1120/32に基づく。各情報データセクションセットSDSSは、960ビットのサイズを有する。960は、32×30に基づく。
【0083】
各情報データセクションセットSDSSに対して第1タイプエンコードが行われ、これにより、35個の第1タイプ符号語が生成される。各第1タイプ符号語は、2ビット×32ビット(=64ビット)のサイズの第1タイプ誤り訂正符号パリティを含み、32ビット×32ビット(=1024ビット)のサイズを有する。
【0084】
35個の第1タイプ符号語は、35個の第1タイプ符号語の各々からの1つを含んだ計35個の第1タイプ符号語列セクションCWCの組に分割される。これにより、第1タイプ符号語列セクションCWCの32個の組が得られる。第1タイプ符号語列セクションCWCの32個の組の各々に対して、第2タイプエンコードが行われる。これにより、32個の第2タイプ符号語が生成される。こうして得られるP(=32)個の第2タイプ符号語は、以下、第2タイプ符号語セットTCWSと称される場合がある。32個の第2タイプ符号語は、それぞれ、32個のストリングSTRに書き込まれる。
【0085】
図15は、Uが4096(すなわち、1セクタのサイズは4Kバイト)、Jが64、Zが1088の例を示す。図15に示されるように、Uが4096であることに基づいて、一例において、Mは120バイトである。よって、1セクタのユーザーデータを含んだ情報データは、4216バイトのサイズを有する。Mは、U=4096、J=64、t=1の例に基づくと、(4096+M)×8の積が62(=J-2t)で割り切られることを可能にする数、すなわち、(4096+M)×8/62を整数とする値であればよい。
【0086】
4216バイトの情報データSDから生成されるサイズの第1タイプ符号語が64ビットのストリングセクションSTRSに書き込まれるために必要なストリングセクションSTRSの数は、K=4216×8×(64/(64-2t))=34816である。
【0087】
Zが1088であるため、F=34816/1088=32であり、すなわち、1セクタのユーザーデータの第1タイプ符号語の記憶は、32個のストリングを必要とする。
【0088】
1つのユーザーデータの記憶に32個のストリングSTRが必要であることに基づいて、第1タイプ符号語の生成のために、2個のユーザーデータが必要である。2は、J/F=64/32に基づく。
【0089】
ユーザーデータからの第2タイプ符号語の組の具体的な生成は、以下の通りである。すなわち、2つのユーザーデータが集められる。2個の4096バイトのユーザーデータの各々に120バイトのメタデータが付加されることにより、2個の4216バイトの情報データが生成される。2個の情報データSDの組は、34816個の情報データセクションSDSに分割される。2個の情報データSDの組のうちの計64個の情報データセクションSDSから情報データセクションセットSDSSが形成される。Zが1088であるため、17個の情報データセクションセットSDSSが形成される。17は、1088/64に基づく。各情報データセクションセットSDSSは、3968ビットのサイズを有する。3968は、64×62に基づく。
【0090】
各情報データセクションセットSDSSに対して第1タイプエンコードが行われ、これにより、17個の第1タイプ符号語が生成される。各第1タイプ符号語は、2ビット×64ビット(=128ビット)のサイズの第1タイプ誤り訂正符号パリティを含み、64ビット×64ビット(=4096ビット)のサイズを有する。
【0091】
17個の第1タイプ符号語の組は、17個の第1タイプ符号語の各々からの1つを含んだ計17個の第1タイプ符号語列セクションCWCの組に分割される。これにより、第1タイプ符号語列セクションCWCの64個の組が得られる。第1タイプ符号語列セクションCWCの64個の組の各々に対して、第2タイプエンコードが行われる。これにより、64個の第2タイプ符号語が生成される。64個の第2タイプ符号語は、それぞれ、64個のストリングSTRに書き込まれる。
【0092】
図16は、Uが4096、Jが128、Zが1152の例を示す。図16に示されるように、Uが4096であることに基づいて、一例において、Mは440である。よって、1セクタのユーザーデータを含んだ情報データは、4536バイトのサイズを有する。Mは、U=4096、J=128、t=1の例に基づくと、(4096+M)×8の積が126(=J-2t)で割り切られることを可能にする数、すなわち、(4096+M)×8/126を整数とする値であればよい。
【0093】
4536バイトの情報データSDから生成されるサイズの第1タイプ符号語が128ビットのストリングセクションSTRSに書き込まれるために必要なストリングセクションSTRSの数は、K=4536×8×(128/(128-2t))=36864である。
【0094】
Zが1152であるため、F=36864/1152=32であり、すなわち、1セクタのユーザーデータの第1タイプ符号語の記憶は、32個のストリングを必要とする。
【0095】
1つのユーザーデータの記憶に32個のストリングSTRが必要であることに基づいて、第1タイプ符号語の生成のために、4個のユーザーデータが必要である。4は、J/F=128/32に基づく。
【0096】
ユーザーデータからの第2タイプ符号語の組の具体的な生成は、以下の通りである。すなわち、4個のユーザーデータが集められる。4個の4096バイトのユーザーデータの各々に440バイトのメタデータが付加されることにより、4個の4536バイトの情報データが生成される。4つの情報データSDの組は、36864個の情報データセクションSDSに分割される。4つの情報データSDのうちの計128個の情報データセクションSDSから情報データセクションセットSDSSが形成される。Zが1152であるため、9個の情報データセクションセットSDSSが形成される。9は、1152/128に基づく。各情報データセクションセットSDSSは、16128ビットのサイズを有する。16128は、128×126に基づく。
【0097】
各情報データセクションセットSDSSに対して第1タイプエンコードが行われ、これにより、9個の第1タイプ符号語が生成される。各第1タイプ符号語は、2ビット×128ビット(=256ビット)のサイズの第1タイプ誤り訂正符号パリティを含み、128ビット×128ビット(=16384)のサイズを有する。
【0098】
9個の第1タイプ符号語の組は、9個の第1タイプ符号語の各々からの1つを含んだ計35個の第1タイプ符号語列セクションCWCの組に分割される。これにより、第1タイプ符号語列セクションCWCの128個の組が得られる。第1タイプ符号語列セクションCWCの128個の組の各々に対して、第2タイプエンコードが行われる。これにより、128個の第2タイプ符号語が生成される。128個の第2タイプ符号語は、それぞれ、128個のストリングSTRに書き込まれる。
【0099】
図17及び図18は、第1実施形態のメモリシステムでのデコードによって生成されるデータの例を示す。デコードの概要は、エンコードにおいて行われる一連の処理の逆の順序の処理に等しい。図17は、第2タイプ符号語を使用する誤り訂正に成功するケースを示す。図18は、第2タイプ符号語を使用する誤り訂正に失敗するケースを示す。
【0100】
図17に示されるように、メモリコントローラ3は、或る1セクタのユーザーデータの読出しをホスト装置5から要求されると、このユーザーデータを含んだF個全ての第2タイプ符号語を、磁気メモリ2から読み出す。各第2タイプ符号語は、図13を参照して上記されているように、複数の第1タイプ符号語列セクションCWC、及び第2タイプ誤り訂正符号パリティを含む。各第1タイプ符号語列セクションCWCは、図11及び図12を参照して上記されているように、ユーザーデータを含んだ情報データSDの情報データセクションSDSと、この第1タイプ符号語列セクションCWCを含んだ第1タイプ符号語中の第1タイプ符号語の一部と、を含む。
【0101】
メモリコントローラ3は、各第2タイプ符号語をデコードする。すなわち、メモリコントローラ3は、各第2タイプ符号語の第2タイプ誤り訂正符号パリティを使用して、この第2タイプ符号語に含まれる複数の第1タイプ符号語列セクションCWCが誤りを含む場合に誤りを訂正する。誤り訂正に成功すると、誤りを含まない第1タイプ符号語列セクションCWCの組が得られる。得られた第1タイプ符号語列セクションCWCの組は、誤りを含まない読出し要求対象ユーザーデータである。
【0102】
図18に示されるように、第2タイプ符号語のうちのいずれか1つにおける誤り訂正が失敗する場合、メモリコントローラ3は、誤り訂正に失敗した第2タイプ符号語を含む第2タイプ符号語セットTCWS中の残りのJ-F個の第2タイプ符号語を磁気メモリ2から読み出す。これにより、第2タイプ符号語セットTCWSが得られ、ひいては、読出し要求対象のユーザーデータを含む複数の第1タイプ符号語が得られる。
【0103】
メモリコントローラ3は、複数の第1タイプ符号語をデコードする。すなわち、メモリコントローラ3は、各第1タイプ符号語の第1タイプ誤り訂正符号パリティを使用して、この第1タイプ符号語に誤りが含まれる場合に誤りを訂正する。デコードの結果、誤りを含まない複数の情報データセクションセットSDSSが得られる。複数の情報データセクションセットSDSSの組は、最初に読み出されたF個の第2タイプ符号語に含まれる部分において、読出し要求対象ユーザーデータを含むとともに誤りを含まない情報データ、ひいては、誤りを含まない読出し要求対象ユーザーデータを含む。これにより、誤りを含まない読出し要求対象ユーザーデータが得られる。
【0104】
図19は、第1実施形態のメモリシステムでの或る動作のフローを示す。具体的には、図19は、ホスト装置5からの書込み要求の対象のユーザーデータのエンコードのフローを示す。図19のフローは、メモリシステム1が、ホスト装置5から書込み要求と書込み要求の対象のユーザーデータを受け取ると、開始する。
【0105】
メモリコントローラ3は、ユーザーデータから、情報データセクションを生成する(ST1)。すなわち、メモリコントローラ3は、ユーザーデータとメタデータとから情報データSDを生成し、生成された情報データSDを複数の情報データセクションSDSに分割する。
【0106】
メモリコントローラ3は、J/F個のユーザーデータの全てについて、各ユーザーデータからステップST1と同様にして情報データセクションが生成されたかを判断する(ST2)。
【0107】
J/F個のユーザーデータの各々についての情報データセクションSDSが生成されていない場合(ST2_No)、メモリコントローラ3は、まだ情報データセクションSDSへの分割の対象とされていない次のユーザーデータを選択する(ST3)。ステップST3は、ステップST1に継続する。すなわち、メモリコントローラ3は、選択されているユーザーデータを含んだ情報データSDを生成し、生成された情報データSDを情報データセクションSDSに分割する。
【0108】
J/F個のユーザーデータの各々についての情報データセクションSDSが生成されている場合(ST2_Yes)、メモリコントローラ3は、第1タイプエンコーダ3611を使用して、1つの情報データセクションセットSDSSに対して第1タイプエンコードを行う(ST4)。これにより、1つの第1タイプ符号語が得られる。
【0109】
Z/J個の情報データセクションセットSDSSの各々に対して第1タイプエンコードが行われていない場合(ST6_No)、メモリコントローラ3は、まだ第1タイプエンコードの対象とされていない次の情報データセクションセットSDSSを選択する(ST7)。ステップST7は、ステップST4に継続する。すなわち、メモリコントローラ3は、選択されている情報データセクションセットSDSSに対して第1タイプエンコードを行う。
【0110】
メモリコントローラ3は、Z/J個の情報データセクションセットSDSSの全てについて、各情報データセクションセットSDSSに対して第1タイプエンコードを行ったかを判断する(ST6)。
【0111】
Z/J個の情報データセクションセットSDSSの各々に対して第1タイプエンコードが行われている場合(ST6_Yes)、メモリコントローラ3は、第2タイプエンコーダ3612を使用して、1つのストリングSTRに書き込まれる予定の第1タイプ符号語列セクションCWCの組に対して第2タイプエンコードを行う(ST8)。
【0112】
メモリコントローラ3は、J個の第1タイプ符号語列セクションCWCの組の全てについて、第1タイプ符号語列セクションCWCの各組に対して第2タイプエンコードを行ったかを判断する(ST9)。
【0113】
J個の第1タイプ符号語列セクションCWCの組の各々に対して第2タイプエンコードが行われていない場合(ST9_No)、メモリコントローラ3は、まだ第2タイプエンコードの対象とされていない次の第1タイプ符号語列セクションCWCの組を選択する(ST10)。ステップST10は、ステップST8に継続する。すなわち、メモリコントローラ3は、選択されている第1タイプ符号語列セクションCWCの組に対して第2タイプエンコードを行う。
【0114】
J個の第1タイプ符号語列セクションCWCの組の各々に対して第2タイプエンコードが行われている場合(ST8_No)、フローは終了する。フローの終了により、1つの第2タイプ符号語セットTCWSが得られる。
【0115】
図20は、第1実施形態のメモリシステムでの或る動作のフローを示す。具体的には、図20は、ホスト装置5からの読出し要求の対象のユーザーデータのデコードのフローを示す。図20のフローは、メモリシステム1が、ホスト装置5から読出し要求を受け取ると、開始する。
【0116】
メモリコントローラ3は、ユーザーデータを含んだF個の第2タイプ符号語を磁気メモリ2から読み出す(ST11)。
【0117】
メモリコントローラ3は、第2タイプデコーダ3622を使用して、F個の第2タイプ符号語の1つに対して第2タイプデコードを行う(ST12)。
【0118】
第2タイプデコードに成功する場合(ST13_Yes)、メモリコントローラ3は、F個の第2タイプ符号語の全てについて、各々に対する第2タイプデコードが成功しているかを判断する(ST14)。
【0119】
F個の第2タイプ符号語の各々に対する第2タイプデコードが成功していない場合(ST14_No)、メモリコントローラ3は、まだ第2タイプデコードの対象とされていない次の第2タイプ符号語を選択する(ST15)。ステップST15は、ステップST12に継続する。すなわち、メモリコントローラ3は、選択されている第2タイプ符号語に対して、第2タイプデコードを行う。
【0120】
F個の第2タイプ符号語の各々に対する第2タイプデコードが成功している場合(ST14_Yes)、フローは終了する。この場合、誤りを含まない第1タイプ符号語列セクションCWCの組、ひいては、誤りを含まない読出し要求対象ユーザーデータが得られる。
【0121】
第2タイプデコードに失敗する場合(ST13_No)、メモリコントローラ3は、F個の第2タイプ符号語を含んだ第2タイプ符号語セットTCWSを得るために、残りの第2タイプ符号語を磁気メモリ2から読み出す(ST21)。ステップST21の結果、読出し要求対象のユーザーデータを含んだ第2タイプ符号語セットTCWSが得られる。
【0122】
メモリコントローラ3は、第2タイプデコーダ3622を使用して、第2タイプ符号語セットTCWSのうちでデコードされていない第2タイプ符号語をデコードする(ST22)。すなわち、メモリコントローラ3は、ステップST11で読み出された第2タイプ符号語のうちでデコードされていない第2タイプ符号語及びステップST21で読み出された第2タイプ符号語に対して第2タイプデコードを行う。
【0123】
メモリコントローラ3は、第2タイプ符号語セットTCWS中の1つの第1タイプ符号語に対して第1タイプデコードを行う(ST23)。
【0124】
第1タイプデコードに失敗する場合(ST24_No)、フローは終了する。この場合、読出し要求対象のユーザーデータの読出しは失敗であり、ユーザーデータは得られない。
【0125】
第1タイプデコードに成功する場合(ST24_Yes)、メモリコントローラ3は、第2タイプ符号語セットTCWS中の全ての、すなわち、Z/J個の第1タイプ符号語に対する第1タイプデコードが成功するかを判断する(ST25)。
【0126】
第2タイプ符号語セットTCWS中のZ/J個の第1タイプ符号語に対する第1タイプデコードが成功する場合(ST25_Yes)、Z/J個の情報データセクションセットSDSSが得られる。Z/J個の情報データセクションセットSDSSは、誤りを含まない読出し要求対象ユーザーデータのセクションを含む。よって、メモリコントローラ3は、得られたZ/J個の情報データセクションセットSDSSから誤りを含まない読出し要求対象ユーザーデータを生成し、フローは終了する。
【0127】
第2タイプ符号語セットTCWS中の全ての、すなわち、Z/J個の第1タイプ符号語に対する第1タイプデコードが成功していない場合(ST25_No)、メモリコントローラ3は、まだ第1タイプデコードの対象とされていない第1タイプ符号語を選択する(ST26)。ステップST26は、ステップST23に継続する。すなわち、メモリコントローラ3は、選択されている第1タイプ符号語に対して第1タイプデコードを行う。
【0128】
1.3.利点(効果)
第1実施形態によれば、以下に記述されるように、データの誤りへの耐性の高いメモリシステムが提供されることが可能である。
【0129】
磁気メモリ2などのFIFO型の磁気メモリは、以下の2つのパターンの意図しない磁気シフトを起こし得る。図21及び図22は、それぞれ、磁気メモリでの意図と異なる磁壁シフトの第1パターン及び第2パターンを示す。図21及び図22に示されるシフトは、全磁壁の各々を、1ビット分、すなわち、各磁壁がシフト前に位置している単位部分MLの境界から、隣の境界にシフトすることを意図されている。よって、磁気メモリ2は、シフト後、α及びβを正の整数として、単位部分ML_αと単位部分ML_α+1に基づくメモリセルMC_βがシフト後に単位部分ML_α+1と単位部分ML_α+2に基づくと認識する。
【0130】
図21に示されるように、第1パターンでは、或る1つの磁壁が意図されない位置にシフトする。すなわち、シフト前に単位部分ML_3とML_4との間に位置する磁壁が、意図されている単位部分ML_4とML_5の境界を越えて、単位部分ML_5とML_6の境界までシフトしている。シフト前、単位部分ML_3とML_4とによってメモリセルMC_5は、“1”データを記憶し、単位部分ML_4とML_5とによってメモリセルMC_6は、“0”データを記憶している。しかしながら、意図しない磁壁のシフトの結果、単位部分ML_4とML_5とによってメモリセルMC_5は“0”データを記憶しているとともに単位部分ML_5とML_6とによってメモリセルMC_4は“1”データを記憶している。これは、シフトにより、図21に示されているビットの連なりが、2ビットの誤りを含むことになったことを意味する。このように、第1のパターンの動作の発生によって、ランダムエラーが起こる。
【0131】
図22に示されるように、第2パターンでは、全ての磁壁が意図されない位置までシフトする。すなわち、全ての磁壁が、シフト前に磁壁が位置している単位部分MLの境界から、2つ先の境界までシフトしている。この結果、図22のストリングSTR中のビットのパターンの例に基づくと、メモリセルMC_7、MC_4、MC_3、MC_2、及びMC1が計5ビットの誤りを含むことになったことを意味する。また、単位部分ML_1の磁化は、記憶される値に基づく向きに設定されていないにも関わらず、メモリセルMC_8のビットが空に維持されることはできないため、メモリセルMC_8には適当な値が挿入される。この値は、誤りとして機能し得る。さらに、磁壁シフトの前後で、ほとんどのビットは位置がずれているのみであって、情報そのものは失われていない。しかしながら、シフト前に末端の単位部分ML(すなわち、図の例では、単位部分ML_8)の磁化に基づくデータ読出しが行われる前に、磁壁シフトによって、シフト前に単位部分ML_8が有していた磁化の情報は失われる。このため、1ビットの情報(すなわち、図の例では、シフト前のメモリセルMC_1による“1”データ)が失われる。このように、第2パターンの磁気シフトの発生によって、バーストエラーが起こる。
【0132】
第2パターンの磁気シフトは、FIFO型の磁気メモリの本来的な構造及び動作に起因する。よって、第2パターンの磁気シフトの発生を十分に抑制することは難しい。第2パターンに起因する誤りは、複数のストリングに書き込まれるデータに対する符号化を使用して訂正され得る。しかしながら、そのためには、非常に多くのストリング、すなわち、磁性体の細線が必要である。これは、磁気メモリの製造コスト及び面積を大きく上昇させる。
【0133】
第1実施形態のメモリシステム1は、複数のストリングSTRに書き込まれるデータから、第1タイプ符号語を生成し、第1タイプ符号語を含んだデータを磁気メモリ2に書き込む。第1タイプ符号語は、ランクに基づく数の誤りを訂正できる。誤りのランクが第1タイプ符号語当たり訂正可能なランクの数であるt以下である限り、第1タイプ符号語がバーストエラーを含んでいるとしても、バーストエラーが訂正されることが可能である。
【0134】
メモリシステム1は、ランクに基づく第1タイプ符号語を使用する。第1タイプ符号語は、図10を参照してなされている記述から明らかなように、ストリングSTRの延びる方向に誤り訂正符号を設けることによって生成されることが可能である。誤り訂正符号がストリングSTRの延びる方向に付加されるにも関わらず、バーストエラーのようなストリングSTRの延びる方向に沿って並ぶ多くの誤りが訂正されることが可能である。すなわち、ストリングSTRの延びる方向に沿って並ぶ多くの誤りの訂正のために磁性体UTを多く設ける必要がない。このため、小面積の磁気メモリ2が製造されることが可能である。
【0135】
メモリシステム1は、1つのストリングSTRに書き込まれるビットの列から第2タイプ符号語を生成し、第2タイプ符号語を1つのストリングSTRに書き込む。第2タイプ符号語のデコードによって、誤りを含まない読出し要求対象ユーザーデータが得られる場合、第1タイプデコードは行われない。このため、バーストエラーが発生していない場合に短時間でデータが読み出されることが可能である。
【0136】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0137】
100…情報処理システム、1…メモリシステム、5…ホスト装置、2…磁気メモリ、3…メモリコントローラ、31…ホストインターフェース、32…ROM、33…RAM、34…CPU、35…メモリインターフェース、36…誤り訂正回路、21…メモリセルアレイ、22…制御回路、STR…ストリング、MC…メモリセル、ML…単位部分、SL…ソース線、BL…ビット線、FL…フィールド線、UT…磁性体、LS…積層体、41…導電体、42…導電体、43…導電体、361…エンコーダ、362…デコーダ、3611…第1タイプエンコーダ、3612…第2タイプエンコーダ、3613…データバッファ、3621…第1タイプデコーダ、3622…第2タイプデコーダ、3623…データバッファ、STR…ストリング、CWC…第1タイプ符号語列セクション、STRS…ストリングセクション、SD…情報データ、SDS…情報データセクション、SDSS…情報データセクションセット、TCWS…第2タイプ符号語セット
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22