(57)【要約】【課題】支援型メモリシステムを提供すること。【解決手段】メモリシステム（１２）は、複数のメモリ記憶素子（２８）と、複数のメモリ記憶素子（２８）に連結されたアドレススペアモジュール（３０）と、を備え、第１の所定のメモリロケーションの第１のアドレスを第２の所定のメモリロケーションの第２のアドレスにマッピングするように動作可能である。そして、複数のメモリ記憶素子に連結されたＥＣＣ（誤り訂正コード）組み合わせ論理回路（２０）を備え、３クロックサイクル未満で、複数のメモリ記憶素子（２８）から読み出したデータのエラーを検出し修正するように動作可能である。【選択図】図２
2004272900.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムであって、
複数のメモリ記憶素子と、
該複数のメモリ記憶素子に連結されたアドレススペアモジュールと、
前記複数のメモリ記憶素子に連結され、３クロックサイクル未満で、前記複数のメモリ記憶素子から読み出したデータのエラーを検出し修正するように動作可能なＥＣＣ組み合わせ論理回路と、
を備えるメモリシステム。
【請求項２】
メモリシステムであって、
前記アドレススペアモジュールは、第１の所定のメモリロケーションの第１のアドレスを第２の所定のメモリロケーションの第２のアドレスにマッピングするように動作可能である、請求項１記載のメモリシステム。
【請求項３】
メモリシステムであって、
前記複数のメモリ記憶素子に連結され、前記複数のメモリ記憶素子の中の選択されたメモリ記憶素子に記憶されたデータを感知するように動作可能な感知回路をさらに備える、請求項１記載のメモリシステム。
【請求項４】
前記複数のメモリ記憶素子に連結され、前記複数のメモリ記憶素子の中の選択されたメモリ記憶素子にデータを書き込むように動作可能な書き込み回路をさらに備える、請求項１記載のメモリシステム。
【請求項５】
メモリシステムであって、
前記ＥＣＣ組み合わせ論理回路に連結され、データを一時的に記憶するように動作可能な補助データ記憶モジュールをさらに備える、請求項１記載のメモリシステム。
【請求項６】
前記複数のメモリ記憶素子はランダムアクセスメモリセルを含む、請求項１記載のメモリシステム。
【請求項７】
前記複数のメモリ記憶素子は磁気抵抗ランダムアクセスメモリセルを含む、請求項１記載のメモリシステム。
【請求項８】
前記ＥＣＣ組み合わせ論理回路は、所定数のデータビットに基づいてＥＣＣコードワードを生成するように動作可能なＥＣＣエンコーダを含む、請求項１記載のメモリシステム。
【請求項９】
前記ＥＣＣ組み合わせ論理回路は、前記複数のメモリ記憶素子から読み出されたＥＣＣコードワードをデコードし、所定数のデータビットで少なくとも１つのエラービットを修正するように動作可能なＥＣＣデコーダを含む、請求項１記載のメモリシステム。
【請求項１０】
プロセッサと、
該プロセッサからの命令に応答して、データを記憶するように動作可能な複数のメモリ記憶素子と、
該複数のメモリ記憶素子および前記プロセッサに連結され、前記プロセッサから受け取った第１の所定のメモリロケーションの第１のアドレスを、第２の所定のメモリロケーションの第２のアドレスにマッピングするように動作可能なアドレススペアモジュールと、
前記複数のメモリ記憶素子および前記プロセッサに連結され、前記プロセッサに提供する前に、３クロックサイクル未満で、前記複数のメモリ記憶素子から読み出したデータのエラーを検出し修正するように動作可能なＥＣＣ組み合わせ論理回路と、
を備える装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶装置のランダムアクセスメモリに関し、特に、支援型メモリシステムに関する。
【背景技術】
【０００２】
メモリ技術では、高速化、大容量化、および高耐故障性において飛躍的な進展がなされてきた。メモリデバイスの速度および大容量化は主に、メモリ素子またはセルをより小型にし、より密に詰め込むことによって成し遂げられる。メモリ素子のサイズは１ビットあたりのコストにも比例するため、メモリ製造業者の目標は、実現可能な限りメモリ素子のサイズを押し下げることにある。セルサイズを小型化することにより、こういったメモリデバイスは、消費者電子製品および玩具、ならびにコンピュータおよび他の装置に埋め込まれるメモリとして使用される場合に、コストおよび容量の点において競争力を持つようになる。
【０００３】
集積回路およびメモリデバイスのサイズ縮小化は、容易で単純な作業ではない。サイズの縮小化および高密度化は、不完全な製造工程および他の故障によるメモリ素子の欠陥に繋がる場合が多い。歩留まりを低減させるいくつかの欠陥としては、たとえば、縮退故障(stuck-at faults)、遷移故障(transition faults)、カップリング故障(coupling faults)、およびパターン依存故障(pattern-sensitive faults)を挙げることができる。
【特許文献１】米国特許出願公開第2001/0035545号明細書
【特許文献２】米国特許出願公開第2002/0078415号明細書
【特許文献３】米国特許出願公開第2002/0083390号明細書
【特許文献４】米国特許出願公開第2002/0097604号明細書
【特許文献５】米国特許出願公開第2001/0097613号明細書
【特許文献６】米国特許出願公開第2001/0120890号明細書
【特許文献７】米国特許出願公開第2001/0120901号明細書
【特許文献８】米国特許第6212647号明細書
【特許文献９】米国特許第6426893号明細書
【特許文献１０】米国特許第6442676号明細書
【特許文献１１】米国特許第6445612号明細書
【特許文献１２】米国特許第6445613号明細書
【特許文献１３】米国特許第6446184号明細書
【非特許文献１】World Wide Web, http://www/eetimes.com/printableArticle?doc_id= OEG20020708S0017, David Lammers, “The Promise of MRAM,” CMP Media, LLC, July 8, 2002, 2 pages.
【非特許文献２】World Wide Web, http://www.brouhaha.com/eric/computers/ecc.html, Eric Smith, “Memory Error Detection and Correction.” Printed on 03/06/2003, 3 pages.
【非特許文献３】Boris Polianskikh, et al., “Design and Implementation of Error and Correction Circuitry for Multilevel Memory Protection,” Institute of Electrical and Electronic Engineers, 2002, pages 89-95.
【非特許文献４】World Wide Web, http://www.goldenram.com/support/ecc.asp, “Introduction to ECC.” Goldenram Memory, printed on 0/06/2003, 3 pages.
【非特許文献５】World Wide Web, http://www.pcguide/ref/ram/errECC-c.html, Charles M. Kozierok, “The PC Guide, Site Version 2.2.0, April 17, 2001, 2 pages.
【非特許文献６】World Wide Web, http://www.pcguide.com/ref/hdd/geom/errECC-c.html, Charles M. Kozierok, “Error Correction Code (ECC),” The PC Guide, Site Version 2.2.0, April 17, 2001, 2 pages.
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、支援型のメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
本発明の一実施形態によると、メモリシステムは、複数のメモリ記憶素子と、該複数のメモリ記憶素子に連結されたアドレススペアモジュールと、上記複数のメモリ記憶素子に連結され、３クロックサイクル未満で、上記複数のメモリ記憶素子から読み出したデータにおけるエラーを検出し修正するように動作可能なＥＣＣ（誤り修正コード）組み合わせ論理回路と、を備える。
【０００６】
本発明の他の実施形態によると、装置は、プロセッサと、該プロセッサからの命令に応答して、データを記憶するように動作可能な複数のメモリ記憶素子と、該複数のメモリ記憶素子および上記プロセッサに連結され、上記プロセッサから受け取った第１の所定のメモリロケーションの第１のアドレスを、第２の所定のメモリロケーションの第２のアドレスにマッピングするように動作可能なアドレススペアモジュールと、上記複数のメモリ記憶素子および上記プロセッサに連結され、上記複数のメモリ記憶素子から読み出したデータを、３クロックサイクル未満で上記プロセッサに提供する前に、上記データにおけるエラーを検出し修正するように動作可能なＥＣＣ（誤り修正コード）組み合わせ論理回路と、を備える。
【０００７】
本発明のさらに別の実施形態によれば、方法は、データおよびこのデータを複数のランダムアクセスメモリ記憶素子に記憶する少なくとも１つのアドレスを受け取ること、受け取った少なくとも１つのアドレスが欠陥メモリロケーションを指しているか否かを判定すること、少なくとも１つのアドレスが欠陥メモリロケーションを指していることに応答して、受け取ったアドレスを少なくとも１つの修正済アドレスにマッピングすること、ＥＣＣ組み合わせロジックエンコーダを使用して、受け取ったデータから３クロックサイクル未満でＥＣＣ（誤り修正コード）コードワードを生成すること、ＥＣＣコードワードを複数のランダムアクセスメモリ記憶素子に記憶すること、誤りを検出し修正するように動作可能なＥＣＣ組み合わせロジックデコーダを使用して、複数のランダムアクセスメモリ記憶素子を読み出し、ＥＣＣコードワードをデコードすること、とを含む。
【０００８】
本発明のさらに別の実施形態によれば、メモリは、複数のメモリ記憶素子と、複数のメモリ記憶素子に連結され、複数のメモリ記憶素子に記憶するデータに基づいて、３クロックサイクル未満でＥＣＣコードワードを生成するように動作可能なＥＣＣ（誤り修正コード）組み合わせロジックエンコーダと、を備える。メモリは、複数のメモリ記憶素子に連結され、複数のメモリ記憶素子から読み出されたＥＣＣコードワードを受け取り、ＥＣＣコードワードをデコードして、データ中の少なくとも１つの誤りを３クロックサイクル未満で修正するように動作可能なＥＣＣ組み合わせロジックデコーダをさらに備える。
【０００９】
本発明の別の実施形態によれば、ＥＣＣ（誤り修正コード）方法は３クロックサイクル未満でエンコード方法を完了することを含み、このエンコード方法は、所定数のビットのデータブロックを受け取ること、組み合わせロジックを使用して、データブロックに基づいて複数のＥＣＣビットを生成すること、複数のＥＣＣビットをデータブロックに添付し、そこからＥＣＣコードワードを生成すること、とを含む。ＥＣＣ方法は、３クロックサイクル未満で完了するデコード方法もさらに含み、デコード方法は、ＥＣＣコードワードを受け取ること、ＥＣＣコードワードをデコードし、誤りがあれば、組み合わせロジックを使用して誤りを修正し、所定数のビットのデータブロックを生成すること、とを含む。
【発明を実施するための最良の形態】
【００１０】
本発明、本発明の目的および利点をより完全に理解するために、これより、添付図面と併せて行われる以下の説明を参照する。
【００１１】
本発明の好ましい実施形態および利点は、同様の番号が各種図面の同様の対応する部分に使用される図面の中の図１〜図５を参照することによって最もよく理解される。
【００１２】
図１は、本発明の一実施形態による支援型メモリシステム１２を有する装置１０の略ブロック図である。装置１０は、機能の１つまたは複数の局面を制御するプロセッサ１４を備えた任意の製品であることができる。たとえば、装置１０は、いずれのバージョンでもよいコンピュータ、オーディオ、ビデオ、および他の種類のマルチメディアデータの取り込み、処理、表示、かつ／または伝送を行う任意の装置、通信装置、個人情報端末などであることができる。支援型メモリシステム１２はプロセッサ１４とやりとり可能に連結され、メモリ１６およびインタフェースモジュール１８を備える。メモリ１６は、少なくとも１ビットのデータをそれぞれが格納することのできる複数のメモリセルまたはメモリ素子を含む。メモリ１６は、１つまたは複数のメモリチップを含むことができる。メモリ１６は、ダイナミックＲＡＭ（ＤＲＡＭ）、拡張データ出力ＲＡＭ（ＥＤＯ  ＲＡＭ）、ビデオＲＡＭ（ＶＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、同期ＲＡＭ（ＳＤＲＡＭ）、および磁気抵抗または磁気ＲＡＭ（ＭＲＡＭ）を含む任意のランダムアクセスメモリ（ＲＡＭ）等、任意のメモリ技術のものであることができる。ＭＲＡＭは、高速書き込みまたは高い書き込み耐性が求められ、より長い用語では汎用読み出し／書き込みＲＡＭであるフラッシュメモリおよびＥＥＰＲＯＭに取って代わる次のディスラプティブ（disruptive：破壊的、革新的）不揮発性メモリ技術として特に関心が持たれている。製造業者は、サイズの縮小ならびに誤り率および欠陥の低減に向けてＭＲＡＭの設計および作製工程を完成する過程にあるため、不完全なメモリを実質的に完全な、または略完全なデバイスとして機能させることが可能な支援型メモリシステムを提供することが重要である。本発明は、本明細書において主にＭＲＡＭの文脈で述べられるが、そのように限定されず、他のメモリ記憶技術にも適用することが可能である。
【００１３】
本発明の譲受人であるHewlett-Packard社は、以下を含むＭＲＡＭ技術に関連する何件かの他の特許の譲受人でもある：米国特許第６，１８８，６１５号、名称「MRAM DEVICE INCLUDING DIGITAL SENSE AMPLIFIERS」、１９９９年１０月２９日出願、２００１年２月１３日発行；米国特許第６，１６３，４７７号、名称「MRAM DEVICE USING MAGNETIC FIELD BIAS TO IMPROVE REPRODUCIBILITY OF MEMORY CELL SWITCHING」、１９９９年８月６日出願、２０００年１２月１９日発行；米国特許第６，１２８，２３９号、名称「MRAM DEVICE INCLUDING ANALOG SENSE AMPLIFIERS」、１９９９年１０月２９日出願、２０００年１０月３日発行；米国特許第６，１１１，７８３号、名称「MRAM DEVICE INCLUDING WRITE CIRCUIT FOR SUPPLYING WORD AND BIT LINE CURRENT HAVING UNEQUAL MAGNITUDES」、１９９９年６月１６日出願、２０００年８月２９日発行；および米国特許第５，９８２，６６０号、名称「MAGNETIC MEMORY CELL WITH OFF-AXIS REFERENCE LAYER ORIENTATION FOR IMPROVED RESPONSE」、１９９８年８月２７日出願、１９９９年１１月９日発行。
【００１４】
インタフェースモジュール１８は、プロセッサ１４とメモリ１６の間のインタフェースとして機能する。装置１０がノート型コンピュータまたはパーソナルコンピュータ等の場合、インタフェースモジュール１８は、ＥＩＤＥ（エンハンスドＩＤＥ）、ＥＳＤＩ（エンハンスドＳＤＩ）、ＳＣＳＩ（小型コンピュータシステムインタフェース）、または別の適したインタフェースを含むことができる。サーバの場合、インタフェースモジュール１８はファイバチャネルまたはＳＣＳＩインタフェースを備えることができる。装置１０がデジタルカメラ等の場合、インタフェースモジュール１８はカメラインタフェースを備えることができ、メモリ１６は、デジタルカメラ内のデジタル画像を短期または長期に記憶するために使用することができる。他のコンピュータシステムでは、インタフェースモジュール１８は、プロセッサ１４がメモリ１６に読み書きできるようにするメモリコントローラバスであることができる。インタフェースモジュール１８の実施態様は、プロセッサ１４、およびプロセッサ１４がメモリ１６と効果的にやりとりでき、かつデータを読み書きできるようにする装置１０の機能に依存する。
【００１５】
支援型メモリシステム１２は、メモリ１６に発生した一時的または永久的な誤りを検出し修正するように動作可能な誤り修正モジュール２０をさらに含む。誤り検出および修正の例としては、アドレススペア方式(address sparing schemes)および誤り修正コード（ＥＣＣ）方式が挙げられる。ＥＣＣは、メモリに書き込まれたデータに基づいてコードを計算し、次に、メモリからデータが読み出されるときに、このコードを使用してデータの正確性をチェックするために使用される技法である。ＥＣＣは、パリティ検出の一形態であるが、ＥＣＣコードの決定に複雑な計算が関わる。誤り修正モジュール２０の助けにより、支援型メモリシステム１２は、欠陥に対する耐性をより高くして、メモリ１６に不完全なメモリ技術を採用することが可能である。新しいメモリ技術を利用するために、支援型メモリシステム１２は誤り修正モジュール２０を採用して、メモリ１６に発生しうる誤りを認識し修正する。
【００１６】
図２は、本発明による支援型メモリシステム１２の一実施形態のより詳細なブロック図である。インタフェースモジュール１８には、読み出し／書き込みデータを一時的に記憶するように動作可能な補助データ記憶モジュールまたはバッファ／キャッシュ２２が連結される。バッファ／キャッシュ２２は、プロセッサ１４による高速アクセスのために現データブロックを記憶するように動作可能である。好ましくは、バッファ／キャッシュ２２は、プロセッサの要求を見越して、最後にアクセスされた、またはアクセスが予想される１つよりも多くのデータブロックを記憶するキャッシュとして機能する。バッファ／キャッシュ２２は、最も単純な形態では、現在のアクティブデータブロックを記憶しながら、プロセッサ１４による順次アクセスを見越して、アドレス空間中の次のデータブロックをロードすることができる。
【００１７】
書き込みデータは、バッファ／キャッシュ２２に連結されたＥＣＣエンコーダ２４に伝えられ、ＥＣＣエンコーダ２４は、そのデータビットに添付する複数のＥＣＣビットを生成する。ＥＣＣエンコーダ２４の詳細は図４に示され、詳細に後述する。ＥＣＣエンコーダ２４とメモリ素子２８の間に連結された書き込み回路２６が、書き込みアドレスによって指定されるメモリロケーションにデータおよびＥＣＣビットを書き込むように機能する。書き込み回路２６は、書き込みワードラインならびにメモリ素子２８の実施態様に使用されるメモリ技術に応じた他の回路素子および構成（図示せず）を含むことができる。書き込みアドレスは、欠陥メモリセルブロックの論理アドレスを、データが実際に存在する別のメモリセルブロックの物理アドレスにマッピングするように動作するアドレススペアモジュール３０によって変更することができる。他の実施形態では、すべてのメモリアドレスを新しいアドレスにマッピングして、事実上、欠陥メモリロケーションの数だけすべてのアドレスをシフトすることができる。アドレススペア技術の実施形態の詳細は、本発明の譲受人に譲渡された米国特許出願第１０／０４４，５４２号、２００２年１月１１日出願、名称「Self-Healing MRAM」、および米国特許出願第０９／７６６，３５４号、２００１年１月１９日出願、名称「Self-Healing Memory」に提供されている。ＥＣＣ方式は、少数のデータエラービットの発生をオンザフライで検出し修正する場合に最適に使用され、アドレススペアは、より大きなメモリチャンクでの永久的なエラーまたは欠陥を修正する場合に最適に使用される。これら両方の方式、およびおそらく、メモリデバイスでの一時的および永久的な誤りをマスクする他の適した技法を組み合わせることが好ましい。
【００１８】
感知回路３２がメモリ素子２８に連結され、メモリ素子２８の論理状態を感知し、それによって記憶されているデータを取得してプロセッサ１４に提供する。感知回路３２は、記憶されているデータを読み出し、そのデータをＥＣＣデコーダ３４に提供する。ＥＣＣデコーダ３４は、エラーが存在する場合、そのデータを検出し、修正済データをバッファ／キャッシュ２２に提供するように動作可能である。ＥＣＣデコーダ３４の詳細については、図５を参照して以下に述べる。
【００１９】
支援型メモリシステム１２において、データは、プロセッサ１４とホストインタフェースモジュール１８の間のメモリバスの幅よりも潜在的に大きな複数のビットで読み書きされる。これにより、効果的なＥＣＣの保護、および複数のビットを並列に読み出すことによる順次アクセスパフォーマンスの向上が可能になる。アドレススペアモジュール３０は、既知の欠陥情報およびアドレスマッピング情報を含む欠陥テーブルに従って、プロセッサが要求したメモリアドレスを内部の物理メモリアドレスに変換する。ＥＣＣのエンコードおよびデコードにより、さらなるデータエラー修正がオンザフライで追加される。ＥＣＣエンコーダ２４およびＥＣＣデコーダ３４は、３クロックサイクル未満で、好ましくは１クロックサイクルでエンコード動作およびデコード動作を完了する非常に「フラット」な、よって高速な組み合わせロジックによって実施されることが好ましい。これは、長い計算を実行して正しいＥＣＣコードを生成し、またＥＣＣコードをデコードするために多くのクロックサイクルを必要とする現在の従来通りの状態マシンの実施態様と著しい対照をなす。
【００２０】
図３は、本発明による支援型メモリシステム１２の一実施形態のより詳細なブロック図である。メモリ１６は、メモリ素子２８がアレイ３６に配列されたＭＲＡＭ等、少なくとも１つのメモリデバイスを含む。各磁気メモリ記憶素子２８は通常、データ記憶レイヤおよび参照レイヤを含む。磁気メモリ素子の論理状態は、データ記憶レイヤおよび参照レイヤにおける相対的な磁化の向きに依存する。各メモリ素子の磁化は、随時、２つの安定した向きのうちの一方の向きを呈する。これら２つの安定した向き：平行と非平行が論理値「０」および「１」を表す。メモリ素子２８は通常、行および列に配列され、行はｘ方向に沿って延び、列はｙ方向に沿って延びる。本発明の説明を大幅に簡易化するために、比較的少数のメモリ素子のみを図３に示す。実際には、１０２４×１０２４アレイ、またはこれよりも大きなメモリ素子が一般に様々な業界で使用されている。
【００２１】
ワードライン４０として機能するトレースがｘ方向に沿って延び、ビットライン４２として機能するトレースがｙ方向に沿って延びる。一実施形態では、メモリ素子２８の各行毎に１つのワードラインがあり、メモリ素子２８の各列毎に１つのビットラインがある。各メモリ素子は、対応するワードライン４０とビットライン４２の交差点に配置されて示されている。感知回路３２（図２）は、読み出し動作中は、選択されたメモリ素子２８の抵抗を感知し、書き込み動作中は、選択されたメモリ素子２８の磁化を方向付ける。
【００２２】
メモリ１６は、ワードライン４０を選択するように動作する行デコーダ４４と、読み出し動作中および書き込み動作中にビットライン４２を選択する複数の列デコード回路４６（列デコーダ４６とも呼称する）と、を備える。メモリセル２８は、行アドレスＡｘを行デコーダ４４に供給し、列アドレスＡｙを列デコーダ４６に供給することによって選択される。行アドレスＡｘに応答して、行デコーダ４４は、対応するワードライン４０を既知の電圧レベル、たとえば接地に連結する。列アドレスＡｙに応答して、列デコーダ４６は、対応するビットライン４２をセンスアンプ４８に連結する。選択されたメモリ素子２８は、選択されたワードライン４０とビットライン４２の交差点にある。センスアンプ４８は、選択されたメモリ素子２８の論理状態を感知する。
【００２３】
行アドレスＡｘおよび列アドレスＡｙは、アドレススペア回路３０によって行デコーダ４４および列デコーダ４６それぞれに供給することができる。一実施形態では、スペア回路３０は、インタフェースモジュール１８を通してプロセッサ１４から論理アドレスを受け取り、記憶されているメモリセル欠陥情報に基づいて、受け取った論理アドレスを物理アドレスに変換する。行デコーダ４４および列デコーダ４６は、スペア回路３０によって提供される物理アドレスを使用して、対応するメモリ素子２８を選択することができる。
【００２４】
ＥＣＣは共通パリティ方式である。ハミングコード、リード−ソロモンコード、バイナリゴレイコード、バイナリゴッパコード、ビタビコード、または他のアルゴリズムを使用し、所定サイズのデータブロックに基づいてＥＣＣビットを生成することができる。データブロックサイズが大きく、ＥＣＣアルゴリズムが強力であるほど、高い修正能力およびデータ効率を達成することができるが、回路の複雑性が増す。従来のシステムのように、複雑な状態マシンを使用してＥＣＣエンコーダ２４およびＥＣＣデコーダ３４のロジックを実施するのではなく、本発明の実施形態は「フラット」な組み合わせ論理方式を用いる。このようなＥＣＣアーキテクチャは、１または非常に少数のクロックサイクルで、たとえば、３クロックサイクル未満でＥＣＣデータをエンコード・デコードすることができる。本発明の一実施形態について、より大きなサイズのデータブロックを外挿することが可能な４ビットデータブロック例を使用して述べる。本例では、ＥＣＣコードワードは４ビットデータであり、さらに３ビットのＥＣＣビットがこれに添付される。本例では、ハミングコードが、ＥＣＣビットの生成に使用される。入力データビットと出力ＥＣＣコードワードの間の結果として生じる関係は、表１に要約することができる。
【００２５】
表１
入力データ 出力コードワード
００００                       ０００００００
０００１                       ０００１０１１
００１０                       ００１０１１０
００１１                       ００１１１０１
０１００                       ０１００１１１
０１０１                       ０１０１１００
０１１０                       ０１１０００１
０１１１                       ０１１１０１０
１０００                       １０００１０１
１００１                       １００１１１０
１０１０                       １０１００１１
１０１１                       １０１１０００
１１００                       １１０００１０
１１０１                       １１０１００１
１１１０                       １１１０１００
１１１１                       １１１１１１１
【００２６】
４データビット入力がｄ１、ｄ２、ｄ３、およびｄ４であり、コードワード出力ビットがｃ１、ｃ２、ｃ３、ｃ４、ｃ５、ｃ６、およびｃ７である場合、表１中の入力と出力の間の論理的な関係は以下のように変形することができる。
ｃ１＝ｄ１
ｃ２＝ｄ２
ｃ３＝ｄ３
ｃ４＝ｄ４
ｃ５＝ｄ１  ＸＯＲ  ｄ２  ＸＯＲ  ｄ３
ｃ６＝ｄ２  ＸＯＲ  ｄ３  ＸＯＲ  ｄ４
ｃ７＝ｄ１  ＸＯＲ  ｄ２  ＸＯＲ  ｄ４
【００２７】
これら論理式は、ＥＣＣコードを３クロックサイクル未満、好ましくは１クロックサイクルで計算可能なＥＣＣエンコーダ２４の組み合わせロジックによって実施することができる。図４に示すように、選択されたデータ入力ｄ１〜ｄｍが、コードワードｃ１〜ｃ（ｍ＋ｎ）を形成するために添付される各ＥＣＣビットｅ１〜ｅｎの論理回路５０に提供される。コードワードはメモリ１６に格納されている。図４では、ＸＯＲゲートを用いて、ＥＣＣビットを生成する論理回路を表す。好ましくは、エンコードはクロック信号ＣＬＫの１クロックサイクルで行われる。この例のハミングコードの単純さにより、結果得られる論理式は、組み合わせロジックの実施態様に自然に適合するように見えうる。しかし、このハミングコードの実施態様は、組み合わせ論理回路を決定するプロセスを示すための一例としてのみ提供されるものであり、リード−ソロモン等より複雑かつ強力なＥＣＣコードは、通常、状態マシンを使用して多数のクロックサイクルでコードワードを生成する必要がある論理式をもたらすであろう。
【００２８】
ＥＣＣデコーダ３４の実施形態も、より複雑ではあるが同様である。この例では、ＥＣＣ方式は、メモリから読み返されたデータのシングルビットエラーを修正することが可能である。以下の表２は、ＥＣＣエンコーダの考えられるすべての入力に、考えられるすべての１ビットエラーを加えたものを表すコードワード入力ｃ１〜ｃ７を示す。さらなるビットエラーを修正する場合、コードワード入力は、そういった考えられるエラー入力を含むように拡張される。ＥＣＣデコーダの所望の出力は、修正済データｄ１〜ｄ４である。
【００２９】
表２
入力コードワード 出力データ
０００００００                     ００００
００００００１                     ００００
０００００１０                     ００００
００００１００                     ００００
０００１０００                     ００００
００１００００                     ００００
０１０００００                     ００００
１００００００                     ００００
０００１０１１                     ０００１
０００１０１０                     ０００１
０００１００１                     ０００１
０００１１１１                     ０００１
０００００１１                     ０００１
００１１０１１                     ０００１
０１０１０１１                     ０００１
１００１０１１                     ０００１
００１０１１０                     ００１０
００１０１１１                     ００１０
００１０１００                     ００１０
００１００１０                     ００１０
００１１１１０                     ００１０
００００１１０                     ００１０
０１１０１１０                     ００１０
１０１０１１０                     ００１０
００１１１０１                     ００１１
００１１１００                     ００１１
００１１１１１                     ００１１
００１１００１                     ００１１
００１０１０１                     ００１１
０００１１０１                     ００１１
０１１１１０１                     ００１１
１０１１１０１                     ００１１
０１００１１１                     ０１００
０１００１１０                     ０１００
０１００１０１                     ０１００
０１０００１１                     ０１００
０１０１１１１                     ０１００
０１１０１１１                     ０１００
００００１１１                     ０１００
１１００１１１                     ０１００
０１０１１００                     ０１０１
０１０１１０１                     ０１０１
０１０１１１０                     ０１０１
０１０１０００                     ０１０１
０１００１００                     ０１０１
０１１１１００                     ０１０１
０００１１００                     ０１０１
１１０１１００                     ０１０１
０１１０００１                     ０１１０
０１１００００                     ０１１０
０１１００１１                     ０１１０
０１１０１０１                     ０１１０
０１１１００１                     ０１１０
０１００００１                     ０１１０
００１０００１                     ０１１０
１１１０００１                     ０１１０
０１１１０１０                     ０１１１
０１１１０１１                     ０１１１
０１１１０００                     ０１１１
０１１１１１０                     ０１１１
０１１００１０                     ０１１１
０１０１０１０                     ０１１１
００１１０１０                     ０１１１
１１１１０１０                     ０１１１
１０００１０１                     １０００
１０００１００                     １０００
１０００１１１                     １０００
１０００００１                     １０００
１００１１０１                     １０００
１０１０１０１                     １０００
１１００１０１                     １０００
００００１０１                     １０００
１００１１１０                     １００１
１００１１１１                     １００１
１００１１００                     １００１
１００１０１０                     １００１
１０００１１０                     １００１
１０１１１１０                     １００１
１１０１１１０                     １００１
０００１１１０                     １００１
１０１００１１                     １０１０
１０１００１０                     １０１０
１０１０００１                     １０１０
１０１０１１１                     １０１０
１０１１０１１                     １０１０
１００００１１                     １０１０
１１１００１１                     １０１０
００１００１１                     １０１０
１０１１０００                     １０１１
１０１１００１                     １０１１
１０１１０１０                     １０１１
１０１１１００                     １０１１
１０１００００                     １０１１
１００１０００                     １０１１
１１１１０００                     １０１１
００１１０００                     １０１１
１１０００１０                     １１００
１１０００１１                     １１００
１１０００００                     １１００
１１００１１０                     １１００
１１０１０１０                     １１００
１１１００１０                     １１００
１００００１０                     １１００
０１０００１０                     １１００
１１０１００１                     １１０１
１１０１０００                     １１０１
１１０１０１１                     １１０１
１１０１１０１                     １１０１
１１００００１                     １１０１
１１１１００１                     １１０１
１００１００１                     １１０１
０１０１００１                     １１０１
１１１０１００                     １１１０
１１１０１０１                     １１１０
１１１０１１０                     １１１０
１１１００００                     １１１０
１１１１１００                     １１１０
１１００１００                     １１１０
１０１０１００                     １１１０
０１１０１００                     １１１０
１１１１１１１                     １１１１
１１１１１１０                     １１１１
１１１１１０１                     １１１１
１１１１０１１                     １１１１
１１１０１１１                     １１１１
１１０１１１１                     １１１１
１０１１１１１                     １１１１
０１１１１１１                     １１１１
【００３０】
ＥＣＣデコーダ入力がｃ１、ｃ２、ｃ３、ｃ４、ｃ５、ｃ６、およびｃ７であり、出力がｄ１、ｄ２、ｄ３、ｄ４である場合、データ出力は以下の式で表すことができる。
ｄ１＝ｃ１  ＸＯＲ［（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ５）ＡＮＤ  ＮＯＴ（ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ４  ＸＯＲ  ｃ６）ＡＮＤ（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ４  ＸＯＲ  ｃ７）
ｄ２＝ｃ２  ＸＯＲ［（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ５）ＡＮＤ  （ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ４  ＸＯＲ  ｃ６）ＡＮＤ（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ４  ＸＯＲ  ｃ７）
ｄ３＝ｃ３  ＸＯＲ［（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ５）ＡＮＤ  （ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ４  ＸＯＲ  ｃ６）ＡＮＤ  ＮＯＴ（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ４  ＸＯＲ  ｃ７）
ｄ４＝ｃ４  ＸＯＲ［ＮＯＴ（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ５）ＡＮＤ  （ｃ２  ＸＯＲ  ｃ３  ＸＯＲ  ｃ４  ＸＯＲ  ｃ６）ＡＮＤ（ｃ１  ＸＯＲ  ｃ２  ＸＯＲ  ｃ４  ＸＯＲ  ｃ７）
【００３１】
これら論理式は、１または非常に少数のクロックサイクルで実行可能な組み合わせロジックで純粋に実施することができるＥＣＣデコーダを記述する。図５は、ＸＯＲゲートで表される、ＥＣＣデコードを行う組み合わせ論理回路５２の図を示す。考えられるエラービット数は、データビット数に伴って指数的に変化するため、上記例では、４ビットデータ入力を使用し、ＥＣＣコードは３ビットであり、１ビットデータエラーが修正される。しかし、この例は比較的単純により大きなデータブロックに拡張することが可能である。
【００３２】
ＡＢＥＬ（Advanced Boolean Equation Language）は、論理回路実施態様を生成する論理回路の振る舞いを記述するために使用可能なコンピュータ言語である。ＡＢＥＬは、プログラマブルロジックデバイス（ＰＬＤ）用にData I/O Corporationによって開発された業界標準ハードウェア記述言語（ＨＤＬ）である。より複雑なシステムを記述することができるＶＨＤＬ（Ｖｅｒｉｌｏｇ−ＨＤＬ）等、他のハードウェア記述言語もある。これらおよび他のハードウェア記述言語を使用して、Ｃのようなステートメントを使用する論理式、真理値表、および状態図を含め、様々な形態のシステムの振る舞いを記述することができる。次に、コンパイラが、ＰＡＬ（プログラマブルアレイロジック）、ＳＰＬＤ（シンプルプログラマブルロジックデバイス）、ＣＰＬＤ（コンプレックスプログラマブルロジックデバイス）、およびＦＰＧＡ（フィールドプログラマブルゲートアレイ）等のＰＬＤ（プログラマブルロジックデバイス）でロジックをシミュレートして実施することができる。
【００３３】
動作にあたり、プロセッサ１４はメモリ１６に記憶するデータをＥＣＣエンコーダ２４に伝える。ＥＣＣエンコーダ２４は、データの所定サイズのデータブロックからコードワードを生成する。次に、結果得られるコードワードがメモリ１６に書き込まれる。読み出しアクセス中、メモリ１６から読み出されたコードワードは、シングルステップでＥＣＣデコーダ３４中の組み合わせロジックによってデコードされ、修正済データが迅速にプロセッサ１４に提供される。
【００３４】
メモリ技術の開発では、製品化するために、欠陥が十分に少ないメモリデバイスを製造する設計および作製工程の完成に長期の先行時間が必要であるため、未だ不完全な技術を商品開発に進める本明細書に述べた技法などの技法は非常に貴重である。本明細書に述べた技法は、メモリデバイスの速度を妨げることなく欠陥をマスキングするため、このようなメモリデバイスはまるで欠陥がないかのように動作することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施形態による支援型メモリシステム１２を有する装置１０の略ブロック図。
【図２】本発明による支援型メモリシステム１２の一実施形態の略ブロック図。
【図３】本発明による支援型メモリシステム１２の一実施形態のより詳細なブロック図。
【図４】本発明によるＥＣＣエンコーダの一実施形態の論理図。
【図５】本発明の教示によるＥＣＣデコーダの一実施形態の論理図。
【図１】
2004272900.tif 000003
【図２】
2004272900.tif 000004
【図３】
2004272900.tif 000005
【図４】
2004272900.tif 000006
【図５】
2004272900.tif 000007