(57)【要約】【課題】複数のメモリの欠陥を修復するための手段を提供する。【解決手段】複数の主IO(108a-f)及び複数の冗長IO(108g-h)を含む１組のIO(108a-h)を有するメモリ(102)用の修復ソリューションを生成するための技術を開示する。具体的には、IOのサブセットとメモリ入力／出力ポート(110a-f)との間に電気的接続を確立することにより、選択されたマッピングを実施するために複数のマルチプレクサ(112a-f)を構成するための技術が提供される。IOのサブセットは、欠陥のある１つ以上の主IO(108a-f)を有効に置き換える複数の冗長IO(108g-h)のうちの１つ以上を含むことができる。複数のマルチプレクサ(112a-f)は、欠陥のある任意の主IOのアイデンティティを符号化し、かつ、複数のマルチプレクサ(112a-f)への選択入力(132a-f,134a-f)として機能する１つ以上のサーモメータコード(116a-f,118a-f)を生成することによって構成することができる。【選択図】図１
2004192792.tif 000002
【特許請求の範囲】
【請求項１】
装置（１００）であって、
複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を含むＩＯのセット（１０８ａ〜ｈ）を備えた電子メモリ（１０２）と、
該電子メモリ（１０２）に接続された複数の入出力ポート（１１０ａ〜ｆ）と、
該複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）のサブセットとの間のマッピングを選択する選択手段（２００）と、
前記ＩＯのセット（１０８ａ〜ｈ）と前記複数の入出力ポート（１１０ａ〜ｆ）の間に接続され、前記マッピングに従って前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）の前記サブセットとの間に電気接続を確立する切り換え手段（１１２ａ〜１１２ｆ）
を備える、装置。
【請求項２】
装置（１００）であって、
複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を含むＩＯのセット（１０８ａ〜ｈ）を備えたオンチップキャッシュメモリ（１０２）と、
該電子メモリ（１０２）に接続された複数の入出力ポート（１１０ａ〜ｆ）と、
少なくとも１つのサーモメータコードを格納する少なくとも１つのレジスタ（１０６ａ〜ｂ）と、
前記少なくとも１つのサーモメータコードに基づいて、前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）のサブセットとの間のマッピングを選択する選択手段（２００）であって、前記サブセットは前記複数の予備ＩＯ（１０８ｇ〜ｈ）のうちの少なくとも１つの予備ＩＯを含む、選択手段（２００）と、
前記ＩＯのセット（１０８ａ〜ｈ）と前記複数の入出力ポート（１１０ａ〜ｆ）の間に接続され、前記マッピングに従って前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）の前記サブセットとの間に電気接続を確立する複数のマルチプレクサ（１１２ａ〜ｆ）
を備える、装置。
【請求項３】
電子メモリ修復システム（１００）において、
複数の入出力ポート（１１０ａ〜ｆ）およびＩＯのセット（１０８ａ〜ｈ）を含む電子メモリ（１０２）であって、前記ＩＯのセット（１０８ａ〜ｈ）は、複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を含むことからなる、電子メモリ（１０２）と、
前記複数の主ＩＯそれぞれの障害状態を表す障害データを受け取るための手段（２０２）と、
前記障害データに基づいて、前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）のサブセットの間のマッピングを選択する選択手段（２００）
を備える、電子メモリ修復システム。
【請求項４】
電子メモリ修復システム（１００）に使用される装置（１０４）であって、
複数のメモリ入出力ポート（１１０ａ〜ｆ）とメモリＩＯのセット（１０８ａ〜ｈ）のサブセットの間のマッピングを符号化した少なくとも１つのサーモメータコードを受け取るための受け取り手段（１１４ａ〜ｆ）であって、前記メモリＩＯのセット（１０８ａ〜ｈ）は、複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を含むことからなる、受け取り手段（１１４ａ〜ｆ）と、
前記少なくとも１つのサーモメータコードを変更して、少なくとも１つの合法化されたサーモメータコードを生成する変更手段（１１４ａ〜ｆ）
を備える、装置。
【請求項５】
電子メモリ修復システム（１００）に使用される方法（５２０）であって、前記システム（１００）は、電子メモリ（１０２）と、該メモリ（１０２）に接続された複数の入出力ポート（１１０ａ〜ｆ）と、ＩＯのセット（１０８ａ〜ｈ）とを備え、前記ＩＯのセット（１０８ａ〜ｈ）は複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を備え、
（Ａ）初期選択値を受け取るステップ（５２２）と、
（Ｂ）前記初期選択値が合法的な選択値から構成されるか否かを判定するステップ（５２４）と、
（Ｃ）前記初期選択値が合法的な選択値から構成されないと判定された場合、前記初期選択値を変更するステップであって、それにより合法化された選択値を生成することからなる、ステップ（５２８〜５３４）と、
（Ｄ）前記初期選択値が合法的な選択値から構成されると判定された場合、前記初期選択値を前記合法化された選択値として選択するステップ（５２４、５２６）と、
（Ｅ）前記合法化された選択値を出力するステップ（５２６）
を含む、方法。
【請求項６】
電子メモリ（１０２）を修復する方法（８００）であって、前記電子メモリ（１０２）は、複数の入出力ポート（１１０ａ〜ｆ）およびＩＯのセット（１０８ａ〜ｈ）を含み、前記ＩＯのセット（１０８ａ〜ｈ）は複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を備え、
（Ａ）第１の障害データを障害データ格納手段（２１０ａ）にロードするステップ（８１４）と、
（Ｂ）前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）のサブセットとの間のマッピングの第１の部分を符号化した第１のサーモメータコードを生成するステップ（８０４、８１６、８０６）と、
（Ｃ）前記第１のサーモメータコードを第１のサーモメータコード格納手段（１０６ａ）に格納するステップ（８２０）と、
（Ｄ）第２の障害データを前記障害データ格納手段（２１０ａ）にロードするステップ（８２２）と、
（Ｅ）前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）の前記サブセットとの間の前記マッピングの第２の部分を符号化した第２のサーモメータコードを生成するステップ（８０８、８２４、８１０）と、
（Ｆ）前記第２のサーモメータコードを第２のサーモメータコード格納手段（１０６ｂ）に格納するステップ（８２８）
を含む、方法。
【請求項７】
システム（１００）において、
複数の入出力ポート（１１０ａ〜ｆ）およびＩＯのセット（１０８ａ〜ｈ）を含む電子メモリ（１０２）であって、前記ＩＯのセット（１０８ａ〜ｈ）は、複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を含むことからなる、電子メモリ（１０２）と、
第１の障害データを障害データ格納手段（２１０ａ）にロードする手段（２０６、２０８）と、
前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）のサブセットとの間のマッピングの第１の部分を符号化した第１のサーモメータコードを生成する手段（２１２）と、
前記第１のサーモメータコードを第１のサーモメータコード格納手段（１０６ａ）に格納する手段（２０６、２０８）と、
第２の障害データを前記障害データ格納手段（２１０ａ）にロードする手段（２０６、２０８）と、
前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）の前記サブセットとの間の前記マッピングの第２の部分を符号化した第２のサーモメータコードを生成する手段（２１２）と、
前記第２のサーモメータコードを第２のサーモメータコード格納手段（１０６ｂ）に格納する手段（２０６、２０８）
を備える、システム。
【請求項８】
装置（１００）であって、
複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を含むＩＯのセット（１０８ａ〜ｈ）を備えたオンチップキャッシュメモリ（１０２）と、
該電子メモリ（１０２）に接続された複数の入出力ポート（１１０ａ〜ｆ）と、
前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）のサブセットとの間のマッピングを選択する内蔵型自己修復エンジン（２００）と、
前記ＩＯのセット（１０８ａ〜ｈ）と前記複数の入出力ポート（１１０ａ〜ｆ）の間に接続され、前記マッピングに従って前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）の前記サブセットとの間に電気接続を確立する複数のマルチプレクサ（１１２ａ〜ｆ）
を備える、装置。
【請求項９】
装置（１００）において、
複数の主ＩＯ（１０８ａ〜ｆ）および複数の予備ＩＯ（１０８ｇ〜ｈ）を含むＩＯのセット（１０８ａ〜ｈ）を備えたオンチップキャッシュメモリ（１０２）と、
該電子メモリ（１０２）に接続された複数の入出力ポート（１１０ａ〜ｆ）と、
前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）のサブセットの間のマッピングを符号化した少なくとも１つのサーモメータコードを格納する少なくとも１つのレジスタ（１０６ａ〜ｂ）であって、前記サブセットは、前記複数の予備ＩＯ（１０８ｇ〜ｈ）のうちの少なくとも１つの予備ＩＯを含むことからなる、少なくとも１つのレジスタと、
前記ＩＯのセット（１０８ａ〜ｈ）と前記複数の入出力ポート（１１０ａ〜ｆ）の間に接続され、前記マッピングに従って前記複数の入出力ポート（１１０ａ〜ｆ）と前記ＩＯのセット（１０８ａ〜ｈ）の前記サブセットの間に電気接続を確立する複数のマルチプレクサ（１１２ａ〜ｆ）
を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルメモリに関し、特に、複数の冗長素子を有するデジタルメモリを修復する技術に関する。
【０００２】
関連出願の相互参照
本願は、「A Data-Shifting Scheme for Utilizing Multiple Redundant Elements」と題する、２００１年７月３１日付けで出願された米国特許出願第０９／９１９０９１号に関連する。
【背景技術】
【０００３】
集積回路はますます小型に、そして高密度に実装されるようになっている。たとえば、今では、１平方ミクロン未満の面積を有する個々のデジタルメモリセルを製造するとともに、何億個ものトランジスタを、米国の１０セント硬貨よりも小さなメモリチップ上に実装することが可能である。製造工程における制御不可能なばらつきにより、このようなメモリチップを完璧に製造することは不可能である。任意の特定のメモリチップは、任意の数の様々な欠陥を含む場合がある。たとえば、チップ上の１つまたは複数のメモリセルに欠陥があり、そのためにデータを確実には格納することができない場合がある。
【０００４】
しかし、メモリチップを使用可能にするためには、こういったチップは、欠陥のないチップと機能的に区別がつかないものでなければならない。実際に欠陥のないチップを製造することは不可能であるため、欠陥のないチップと同じ機能を提供することができるように、欠陥のあるチップを自動的に修復する様々な技法が開発されている。すべてのチップにおけるすべての欠陥を修復することは可能ではないかもしれないが、修復によって何個かであってもチップを使用可能な状態にする能力により、特定のバッチのチップの製造歩留まりを向上させ、ひいては製造工程の効率を上げることができる。
【０００５】
チップの修復に採用されている一技法は、欠陥があると証明された主要な回路素子の代わりとして使用することができる冗長回路素子をチップ上に設けるというものである。チップのテスト中に回路の欠陥部分を特定することができ、もし冗長回路素子があれば、関連するヒューズ、または同様の機構を開通させることにより、冗長回路素子をアクティブにすることができる。その後、冗長回路素子が、元の欠陥のある回路素子に取って代わり、事実上置き換えられ、こうすることによってチップを修復し、使用可能な状態にする。冗長性は、冗長回路素子で回路素子の集まりの中の欠陥のある１個の回路素子を置換することができるように、多数の反復素子がある形のアレイに配列された反復回路に特に適している。
【０００６】
メモリチップはこのような反復回路の一例である。メモリチップ中のメモリは、行および列に配列される。たとえば、このようなチップ中の冗長回路素子は、１個のメモリセル、１行またはひとまとまりの行になったメモリセル、または１列またはひとまとまりの列になったメモリセルとすることができる。たとえば、所与の列中の１個のセルに欠陥がある場合、そのセルを欠陥として分類することができる。欠陥セル、あるいは欠陥セルを含む１つまたは複数の列（または行）あるいはひとまとまりの列（または行）を、事実上、冗長セル、冗長行、冗長列、ひとまとまりの冗長行、またはひとまとまりの冗長列で代用することができる。このようにして、チップを完全に動作可能な状態にすることができる。このような修復により、メモリチップを高信頼的に使用することが可能になり、ひいては、メモリチップを破棄する必要性を回避することによって製造歩留まりが向上する。
【０００７】
メモリ「ＩＯ」は、メモリチップに、また、メモリチップからデータを伝送する組み合わせ（複合）入力／出力インタフェースである。１つのＩＯをチップ上の特定のメモリアレイまたはサブアレイに接続することができる。たとえば、チップ上の各ＩＯを、それぞれ８列および２５６行を有するメモリアレイに接続することができる。特定のＩＯに接続されたアレイ中の個々のセル、列、または行に欠陥がある場合、従来の修復技法を用いて個々のセル、列、または行を修復することが可能である。しかし、従来の修復技法がうまくいかない場合は、冗長メモリアレイ全体に接続された冗長ＩＯで事実上置換することによって、ＩＯ自体を修復する技法も存在する。
【０００８】
さらに、２００１年７月３１日付けで出願された「A Data-Shifting Scheme for Utilizing Multiple Redundant Elements」と題する、同時係属中であり、本願と同じ所有者による特許出願第０９／９１９０９１号には、キャッシュ入出力データが最大２つの欠陥キャッシュＩＯを迂回するように、このようなデータをシフトする技法が開示されている。このようなデータシフトを行う回路素子（たとえば、マルチプレクサ）は、欠陥があると判定された特定のキャッシュＩＯ（もしあれば）をデータが迂回するように構成されなければならない。このような構成は、欠陥があると判定された特定のキャッシュＩＯ（もしあれば）の特定に応答して自動的に行われることが望ましい。このような構成を多種多様な欠陥に対して自動的かつ正確に行うことは、０個、１個、または２個のキャッシュＩＯに欠陥がある可能性がある様々な順列があること、および欠陥のあるキャッシュＩＯを完璧な正確性で検出することが不可能な場合もあることから、特に難しい。
【特許文献１】米国特許特許第６，３７４，３７０Ｂ１号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、必要とされるのは、複数の欠陥ＩＯを修復するようにキャッシュを構成する技法である。
【課題を解決するための手段】
【００１０】
一態様においては、本発明は、複数の主ＩＯおよび複数の冗長ＩＯを含むＩＯのセットを有するメモリの修復ソリューションを生成する技法を特徴とする。たとえば、メモリの入出力ポート（本明細書では、入力／出力ポートを入出力ポートと記載する）とメモリＩＯのサブセットの間のマッピングを選択する技法が提供される。特に、ＩＯのサブセットとメモリの入出力ポートの間に電気接続を確立することにより、選択されたマッピングを実施するように複数のマルチプレクサを構成する技法が提供される。ＩＯのサブセットは、主ＩＯのうちの１つまたは複数の欠陥のある主ＩＯに事実上取って代わる複数の冗長ＩＯのうちの１つまたは複数の冗長ＩＯを含みうる。複数のマルチプレクサは、任意の欠陥のある主ＩＯのＩＤ（アイデンティティ）を符号化し、複数のマルチプレクサへの選択入力としての役割を果たす１つまたは複数のサーモメータコード（thermometer code）を生成することによって構成しうる。
【００１１】
別の態様においては、本発明は、複数の主ＩＯおよび複数の予備ＩＯを含むＩＯのセットを備えた電子メモリと、電子メモリに接続された複数の入出力ポートと、複数の入出力ポートとＩＯのセットのサブセットとの間のマッピングを選択する選択手段と、ＩＯのセットと複数の入出力ポートの間に接続され、マッピングに従って複数の入出力ポートとＩＯのセットのサブセットとの間に電気接続を確立する切り換え手段と、を備えた装置を特徴とする。
【００１２】
さらに別の態様では、本発明は、複数の入出力ポートおよびＩＯのセットを備えた電子メモリであって、ＩＯのセットは複数の主ＩＯおよび複数の予備ＩＯを含むことからなる、電子メモリを備えた電子メモリ修復システムに使用される方法を特徴とする。この方法は、（Ａ）複数の主ＩＯそれぞれの障害状態（またはエラー状態。以下同じ）を表す障害データ（またはエラーデータ。以下同じ）を受け取るステップと、（Ｂ）複数の入出力ポートとＩＯのセットのサブセットとの間のマッピングを選択するステップと、を含む。
【００１３】
別の態様では、本発明は、複数の入出力ポートおよびＩＯのセットを備えた電子メモリであって、ＩＯのセットは複数の主ＩＯおよび複数の予備ＩＯを含むことからなる、電子メモリと、複数の主ＩＯそれぞれの障害状態を表す障害データを受け取る手段と、複数の入出力ポートとＩＯのセットのサブセットとの間のマッピングを選択する選択手段と、を備えた電子メモリ修復システムを特徴とする。
【００１４】
さらに別の態様においては、本発明は、複数のメモリ入出力ポートとメモリＩＯのセットのサブセットとの間のマッピングを符号化した少なくとも１つのサーモメータコードを受け取る受け取り手段であって、メモリＩＯのセットは複数の主ＩＯおよび複数の予備ＩＯを含むことからなる、受け取り手段と、少なくとも１つのサーモメータコードを変更して少なくとも１つの合法的なサーモメータコードを生成する変更手段と、を備えた、電子メモリ修復システムに使用される装置を特徴とする。
【００１５】
本発明の各種態様および実施形態の他の特徴および利点は、以下の説明および特許請求の範囲から明らかになろう。尚、本明細書において合法的とは、正当と認められるといった意味であり、例えば、合法的なサーモメータコードは、適正な動作を生じさせるサーモメータコードといった意味で用いている。
【実施例】
【００１６】
一態様においては、本発明は、複数の主ＩＯおよび複数の冗長ＩＯを含むＩＯのセットを備えたメモリの修復ソリューションを生成する技法を特徴とする。たとえば、メモリの入出力ポートとメモリＩＯのサブセットとの間のマッピングを選択する技法が提供される。具体的には、ＩＯのサブセットとメモリの入出力ポートの間に電気接続を確立することにより、選択されたマッピングを実施するように複数のマルチプレクサを構成する技法が提供される。ＩＯのサブセットは、主ＩＯのうちの１つまたは複数の欠陥のある主ＩＯに事実上取って代わる複数の冗長ＩＯのうちの１つまたは複数の冗長ＩＯを含みうる。複数のマルチプレクサは、任意の欠陥のある主ＩＯのＩＤを符号化し、複数のマルチプレクサへの選択入力としての役割を果たす１つまたは複数のサーモメータコードを生成することによって構成することができる。
【００１７】
図１には、本発明の１実施形態によるメモリ修復システム１００の概略図を示す。システム１００は、キャッシュメモリ１０２、冗長合法化ブロック（ｒｅｄ＿ｌｅｇ）１０４、および２つの冗長レジスタ（ｒｅｄ１およびｒｅｄ２）１０６ａ〜ｂを備える。
【００１８】
メモリ修復システム１００の動作について述べる前に、以下の説明および図面に使用されるテキスト表記およびグラフィック表記についてまず説明する。図面中、信号には記述的な信号名によりラベル付けがされている。信号名の後に括弧で括った１つのインデックスが続くもの（ｒｅｄ１［２］等）は、インデックスによって指定される１ビット信号を指し、インデックス０は最下位ビットを指定する。信号名の後に括弧で括った上限インデックスおよび下限インデックスが続くもの（ｒｅｄ１［５：３］等）は、指定された上限インデックスから指定された下限インデックスまでの範囲のインデックスの一連の信号ビットを指す。括弧が続かないむき出しの信号名（ｒｅｄ１等）は、信号全体を指す。
【００１９】
さらに、説明し易くするため、また図面の乱雑さを少なくするため、図面に関連する信号パスのみが示され、副次的な信号（以下、副信号）は対応する完全な信号から切り離されて示される場合がある。当業者には、従来の技法を使用して信号を副信号に分けることにより、及び副信号を一緒に組み合わせて、本明細書に開示される回路を実施しうることが理解されよう。
【００２０】
さらに、図面には、特定のマルチビット信号が単一ライン上で伝送されるものとして示される場合があるが、実際には、これら信号を適宜幅のバス上で伝送することができ、またさらに、組み合わせるか分離させて、図面に示されている数のバスよりも少ないかまたは多い数のバスとすることも可能である。
【００２１】
再び図１を参照すると、キャッシュ１０２は、メモリ１０８ａ〜ｆの６つの主ＩＯ（ｂｉｔ［５：０］とラベル付けされる。尚、ｂｉｔ［５：０］とラベル付けすることもできる）を含む。キャッシュ１０２は、主ＩＯ１０８ａ〜ｆのうちの欠陥のあるものを置換し、それによって事実上修復するために使用しうる２つの冗長（予備）ＩＯ１０８ｇ〜ｈも含む。キャッシュ１０２は、６つの出力ポート１１０ａ〜ｆ（Ｃ［５：０］とラベル付けされる）を含み、ここを通してデータがキャッシュ１０２によって伝送される。キャッシュ１０２は入力ポートおよび対応するマルチプレクサも含むが、このような入力ポートおよびマルチプレクサは、説明を容易にするために、また当業者は、本明細書に提供される説明に基づいてこのような入力ポートおよびマルチプレクサの実施方法を理解するであろうことから、図１に示されていない。本明細書では、「入出力」ポートという用語は、入力ポートと出力ポートの一方であるか、または入力ポートおよび出力ポートの両方である任意のポートを指す。
【００２２】
キャッシュＩＯ１０８ａ〜ｈとキャッシュポート１１０ａ〜ｆの間には、キャッシュポート１１０ａ〜ｆをキャッシュＩＯ１０８ａ〜ｈに接続するマルチプレクサ１１２ａ〜ｆのアレイがある。マルチプレクサ１１２ａ〜ｆは、主ＩＯ１０８ａ〜ｆのうちの最大２つの欠陥ＩＯを冗長ＩＯ１０８ｇ〜ｈの一方または両方で修復するために使用することができ、これについては、上記参照した「A Data-Shifting Scheme for Utilizing Multiple Redundant Elements」と題する特許出願にさらに詳しく記載されている。
【００２３】
簡潔に概観すると、各マルチプレクサ１１２ａ〜ｆは、３つの１ビットデータ入力および２つの１ビット選択入力を有する。具体的には、マルチプレクサ１１２ａはデータ入力１２０ａ〜ｃを有し、マルチプレクサ１１２ｂはデータ入力１２２ａ〜ｃを有し、マルチプレクサ１１２ｃはデータ入力１２４ａ〜ｃを有し、マルチプレクサ１１２ｄはデータ入力１２６ａ〜ｃを有し、マルチプレクサ１１２ｅはデータ入力１２８ａ〜ｃを有し、マルチプレクサ１１２ｆはデータ入力１３０ａ〜ｃを有する。マルチプレクサの選択入力について以下に述べる。
【００２４】
マルチプレクサ１１２ａ〜ｆのデータ入力は、主キャッシュＩＯ１０８ａ〜ｆのどれにも欠陥がない場合には、マルチプレクサ１１２ａ〜ｆが主キャッシュＩＯ１０８ａ〜ｆの出力を対応するキャッシュポート１１０ａ〜ｆに直接提供することができるように、また、マルチプレクサ１１２ａ〜ｆが主キャッシュＩＯ１０８ａ〜ｆのうちの任意の１つまたは２つの欠陥のある主キャッシュＩＯを予備キャッシュＩＯ１０８ｇ〜ｈの一方または両方で取って代えることができるように、主キャッシュＩＯ１０８ａ〜ｆおよび予備キャッシュＩＯ１０８ｇ〜ｈに接続される。マルチプレクサ１１２ａ〜ｆを使用してこの機能を実行することについては、上記参照した「A Data-Shifting Scheme for Utilizing Multiple Redundant Elements」と題する特許出願に詳しく述べられており、以下の説明を明確にするために、これより、マルチプレクサ１１２ａ〜ｆの動作について簡潔に述べることにする。
【００２５】
各マルチプレクサ１１２ａ〜ｆの３つの入力は、右から左に、マルチプレクサのすぐ上のキャッシュＩＯ、そしてそのキャッシュＩＯの左隣のキャッシュＩＯに接続される。たとえば、マルチプレクサ１１２ａの第１のデータ入力１２０ａは主キャッシュＩＯ１０８ａ（ｂｉｔ［０］）に接続され、マルチプレクサ１１２ａの第２のデータ入力１２０ｂは主キャッシュＩＯ１０８ｂ（ｂｉｔ［１］）に接続され、マルチプレクサ１１２ａの第３のデータ入力１２０ｃは主キャッシュＩＯ１０８ｃ（ｂｉｔ［２］）に接続される。まとめると、マルチプレクサ１１２ａ〜ｆが０〜５の番号のインデックスをそれぞれ有する場合、インデックスｉ（０≦ｉ＜６）を有する各マルチプレクサｍｉについて、マルチプレクサｍｉの最も右側にある入力はインデックスｉを有するキャッシュＩＯに接続され、マルチプレクサｍｉの中央の入力はインデックスｉ＋１を有するキャッシュＩＯに接続され、マルチプレクサｍｉの最も左側にある入力はインデックスｉ＋２を有するキャッシュＩＯに接続される。
【００２６】
各マルチプレクサ１１２ａ〜ｆは、３つのデータ入力の中のいずれかかから出力を選択することができる。主キャッシュＩＯ１０８ａ〜ｆのいずれにも欠陥がない場合、各マルチプレクサ１１２ａ〜ｆは最も右側にある入力を選択することができ、それによって主キャッシュＩＯ１０８ａ〜ｆの内容を対応するキャッシュポート１１０ａ〜ｆに直接渡すことができる。しかし、特定のマルチプレクサのすぐ上にある主キャッシュＩＯに欠陥がある場合、マルチプレクサは中央の入力を選択することができ、それによって欠陥のあるキャッシュＩＯをその左隣のキャッシュＩＯで事実上取って代えることができる。たとえば、キャッシュＩＯ１０８ａに欠陥があり、キャッシュＩＯ１０８ｂに欠陥がない場合、マルチプレクサ１１２ａは中央の入力１２０ｂを選択することができ、それによって欠陥のあるキャッシュＩＯ１０８ａを迂回し、これをキャッシュＩＯ１０８ｂで置き換えることができる。このような状況では、残りのマルチプレクサ１１２ｂ〜ｆへの入力もまた調整する必要があるが、これについては、上記参照した「A Data-Shifting Scheme for Utilizing Multiple Redundant Elements」と題する特許出願にさらに詳しく述べられている。１つのみのキャッシュＩＯに欠陥があるものと想定すると、第１の予備ＩＯ１０８ｇが、マルチプレクサ１１２ｆの中央の入力１３０ｂを通してマルチプレクサ１１２ｆによって選択されることになる。
【００２７】
これより、キャッシュＩＯ１０８ａおよびキャッシュＩＯ１０８ｂの両方に欠陥があり、残りのＩＯ１０８ｃ〜ｈに欠陥がない例を考える。この例では、マルチプレクサ１１２ａは最も左側の入力１２０ｃ（キャッシュＩＯ１０８ｃに接続されている）を選択しなければならない。これは、他の２つの入力１２０ａ〜ｂが欠陥のあるＩＯ１０８ａ〜ｂに接続されているためである。より一般的には、マルチプレクサ１１２ａ〜ｆのすぐ上のキャッシュＩＯおよびその左隣のキャッシュＩＯの両方に欠陥がある場合には、マルチプレクサ１１２ａ〜ｆそれぞれの最も左側の入力は、そのマルチプレクサの左に２ビット進んだ位置にあるキャッシュＩＯを選択する。
【００２８】
以上、どのようにして、主キャッシュＩＯ１０８ａ〜ｆのうちの欠陥のあるＩＯを、マルチプレクサ１１２ａ〜ｆ上の適切なデータ入力を選択することにより、予備ＩＯ１０８ｇ〜ｈで置き換えることができるかについて説明した。しかし、マルチプレクサ１１２ａ〜ｆに、ＩＯ１０８ａ〜ｈのうちの欠陥のないものをポート１１０ａ〜ｆにルート変更させるには、欠陥のないＩＯのみの出力がキャッシュポート１１０ａ〜ｆにルーティングされるように、マルチプレクサ１１２ａ〜ｆそれぞれの適切なデータ入力を選択する必要がある。以下では、内蔵型自己試験（ＢＩＳＴ）エンジン（図示せず）によって生成されたキャッシュＩＯ障害データに応答して、マルチプレクサ１１２ａ〜ｆそれぞれの適切なデータ入力を自動的に選択するために使用することができる技法について述べる。
【００２９】
マルチプレクサ１１２ａ〜ｆのそれぞれは、内蔵型自己修復（ＢＩＳＲ）エンジン（図２）に接続された２本の選択入力ワイヤによって制御される。ここでも図１を参照すると、第１の冗長レジスタは６ビット１１６ａ〜ｆを含み、第２の冗長レジスタは６ビット１１８ａ〜ｆを含む。冗長合法化ブロック１０４によって行われる機能を一時的に無視すると、２つの冗長レジスタ１０６ａ〜ｂ中の対応する各ビット対が、マルチプレクサ１１２ａ〜ｆのうちの対応するマルチプレクサへの選択入力として使用される２ビット数を形成する。たとえば、ビット１１６ａ（ｒｅｄ１［０］）およびビット１１８ａ（ｒｅｄ２［０］）は、一対のワイヤ上で、対応するマルチプレクサ１１２ａへの選択入力として伝送される２ビット数を形成する。同様に、ビット１１６ｆ（ｒｅｄ１［５］）およびビット１１８ｆ（ｒｅｄ２［５］）は、一対のワイヤ上で、対応するマルチプレクサ１１２ｆへの選択入力として伝送される２ビット数を形成する。
【００３０】
第１および第２の冗長レジスタ１０６ａ〜ｂ中の対応するビットの各対毎に、第２の冗長レジスタ１０６ｂからのビットが２ビット数の最上位ビットを形成し、第１の冗長レジスタからのビットが２ビット数の最下位ビットを形成する。たとえば、ｒａｍ＿ｒｅｄ２［５］１１８ｆおよびｒａｍ＿ｒｅｄ１［５］１１６ｆは、マルチプレクサ１１２ｆの入力を選択する２ビット数を形成する。図１に示されるように、各マルチプレクサ１１２ａ〜ｆの最も右側の入力が入力０であり、中央の入力が入力１であり、最も左側の入力が入力３であるものと想定する。冗長レジスタ１０６ａ〜ｂの対応するビットの値に基づいて、各マルチプレクサ１１２ａ〜ｆによって選択された入力を以下の表１に示す。
【００３１】
【表１】
2004192792.tif 000003
【００３２】
表１に示すように、マルチプレクサ１１２ａ〜ｆの１つへの選択入力として提供される２ビット数により、その数に関連するマルチプレクサデータ入力ポートが選択される。言い換えれば、２ビット選択入力０（二進数００）により入力０が選択され、選択入力１（二進数０１）により入力１が選択され、選択入力３（二進数１１）により入力３が選択される。２ビット入力「１０」の場合に表１に示される値「Ｘ」は、「１０」が非合法のマルチプレクサ選択入力値であることを示すことに留意されたい。さらに詳しく後述するように、冗長合法化ブロック１０４は、冗長レジスタ１０６ａ〜ｂ中のビットを適宜変更することにより、この非合法値が選択入力としてマルチプレクサ１１２ａ〜ｆのいずれにも決して提供されないように保証する。
【００３３】
上記説明から、マルチプレクサ１１２ａ〜ｆの入力を、冗長レジスタ１０６ａ〜ｂに適切な値を格納することによって選択できるということが明かである。たとえば、主キャッシュＩＯ１０８ａ〜ｆのいずれにも欠陥がない場合、二進数値００００００を各冗長レジスタ１０６ａ〜ｂに格納することができる。これによって、各マルチプレクサ１１２ａ〜ｆは選択入力として二進数値００を受け取り、これに応答して、各マルチプレクサ１１２ａ〜ｆは最も右側の入力（入力０）を出力として選択し、それによって各主キャッシュＩＯ１０８ａ〜ｆが対応するキャッシュポート１１０ａ〜ｆに直接ルーティングされる。最も左側の主キャッシュＩＯ１０８ｆのみに欠陥がある場合は、二進数値１０００００を第１の冗長レジスタ１０６ａに格納し、二進数値００００００を第２の冗長レジスタに格納することができる。これにより、二進数値００が各マルチプレクサ１１２ａ〜ｅに提供され、それによって各マルチプレクサに最も右側の入力を選択させ、（欠陥のない）キャッシュＩＯ１０８ａ〜ｅを対応するキャッシュポート１１０ａ〜ｅに直接ルーティングさせる。しかし、最も左側のマルチプレクサ１１２ｆは二進数値０１を選択入力として受け取るため、マルチプレクサ１１２ｆに中央の入力１３０ｂを選択させ、それによって第１の予備ＩＯ１０８ｇ（欠陥のあるＩＯ１０８ｆではなく）をキャッシュポート１１０ｆにルーティングさせる。
【００３４】
冗長レジスタ１０６ａ〜ｂに格納されて、適切な選択入力をマルチプレクサ１１２ａ〜ｆに提供し、そうすることによって欠陥のないキャッシュＩＯのみをキャッシュポート１１０ａ〜ｆにルーティングするコードは、本明細書では「サーモメータコード（thermometer code)」と呼ばれる。サーモメータコードをどのように生成し、冗長レジスタ１０６ａ〜ｂに自動的に格納することができるかについて述べる前に、サーモメータコードのフォーマットについてまず説明する。
【００３５】
第１の冗長レジスタ１０６ａに格納されたサーモメータコードは、図１の右側から左側に数えて最初の欠陥のある主キャッシュＩＯ（もしあれば）を特定する。第２の冗長レジスタ１０６ｂに格納されたサーモメータコードは、最初の欠陥のある主キャッシュＩＯから左に向けて数えて次の欠陥のある主キャッシュＩＯ（もしあれば）を特定する。
【００３６】
本発明の１実施形態では、開始状態として、それまで修復が行われておらず、第１および第２の冗長レジスタｒｅｄ１  １０６ａおよびｒｅｄ２  １０６ｂが両方とも、すべて０を含んでいるものと想定して、サーモメータコードのフォーマットを以下のようなものとする。本明細書では、ＩＯの「有効ビットインデックス」は、そのＩＯが現在接続されているマルチプレクサのインデックスを指す。たとえば、ＩＯ１０８ｂ（ビットインデックス１を有する）がＩＯ１０８ａの欠陥によりマルチプレクサ１１２ａに接続されている場合、ＩＯ１０８ｂは有効ビットインデックス０を有する。
【００３７】
サーモメータコードによって符号化されている欠陥ＩＯが有効ビットインデックスｎを有する場合、サーモメータコードのビット０〜ｎ−１は０に等しく、ビットｎ〜ｎｍａｘ−１は１に等しい。但し、ｎｍａｘは主キャッシュＩＯの個数（本例では６）である。たとえば、（ビットインデックス１における）キャッシュＩＯ１０８ｂのみに欠陥がある場合、対応するサーモメータコードは二進数値１１１１１０を有する。（ビットインデックス５における）キャッシュＩＯ１０８ｆのみに欠陥がある場合、対応するサーモメータコードは二進数値１０００００を有する。キャッシュＩＯ１０８ａ〜ｆのいずれにも欠陥がない場合、対応するサーモメータコードは二進数値００００００を有する。
【００３８】
同じフォーマットを有するサーモメータコードを第２の冗長レジスタ１０６ｂに格納することができ、そうすることによって主キャッシュＩＯ１０８ａ〜ｆの２番目のＩＯに欠陥があることを示すとともに、主キャッシュＩＯ１０８ａ〜ｆのいずれに欠陥があるかを示すことができる。しかし、第１の冗長レジスタ１０６ａに格納されているサーモメータコードに従って行われた修復により、第２の冗長レジスタ１０６ｂに格納されているサーモメータコードのビットのいくつかまたはすべてを主キャッシュＩＯ１０８ａ〜ｆに関してシフトし、主キャッシュＩＯ１０８ａ〜ｆの１つまたは複数の新しい有効ビットインデックスを反映させることができることに留意されたい。たとえば、第１の冗長レジスタ１０６ａにサーモメータコード１１１１１０が格納され、第２の冗長レジスタ１０６ｂにサーモメータコード１１００００が格納されていることは、第１の欠陥キャッシュＩＯがＩＯ１０８ｂ（ｂｉｔ［１］）であり、第２の欠陥キャッシュＩＯがＩＯ１０８ｆ（ｂｉｔ［５］）であることを示す。第２のサーモメータコード（１１００００）は、ＩＯ１０８ｅ（ｂｉｔ［４］）ではなくＩＯ１０８ｆ（ｂｉｔ［５］）を指す。これは、ＩＯ１０８ｆ（ｂｉｔ［５］）が、第１の修復（第１のサーモメータコード１１１１１０から行われる）が行われた後に有効ビットインデックス４を有するためである。
【００３９】
以上、一旦冗長レジスタ１０６ａ〜ｂに格納されたサーモメータコードを使用してキャッシュ１０２をどのように修復することができるかについて述べた。適切なサーモメータコードを生成し、冗長レジスタ１０６ａ〜ｂに格納するために利用可能な技法について、以下に述べる。
【００４０】
キャッシュ１０２は、キャッシュメモリをテストする内蔵型自己試験（ＢＩＳＴ）エンジン（図示せず）を備えることができる。ＢＩＳＴエンジンは当該技術分野において既知であり、キャッシュ１０２と併せて使用しうる特定のＢＩＳＴエンジンが、２００２年４月１６日付で出願された「Method and System for Flexible Control of BIST Registers Based Upon On-Chip Events」と題する、本出願と同じ所有者による特許第６，３７４，３７０Ｂ１号に記載されており、これを参照によって本明細書に援用する。
【００４１】
概して、ＢＩＳＴエンジンは、入力をキャッシュ１０２に提供し、出力を監視し、実際の出力が期待される出力と同じであるか否かを判定することによってキャッシュメモリアレイをテストする。ＢＩＳＴエンジンは、キャッシュメモリアレイを複数回スキャンし、多くの異なる入力パターンを使用してアレイをテストすることができる。ＢＩＳＴエンジンは、特定された障害をいずれも記録する。
【００４２】
システム１００は、ＢＩＳＴエンジンによって生成される障害データに基づいて、キャッシュ１０２を自動的に修復する内蔵型自己修復（ＢＩＳＲ）エンジンを備えることができる。図２には、本発明の１実施形態によるＢＩＳＲエンジン２００のブロック図を示す。ＢＩＳＲエンジン２００の中のレジスタのいくつか（フィードバックシフトレジスタ（1fsr レジスタ）および障害蓄積レジスタ（eacc レジスタ）等）は、キャッシュＢＩＳＴエンジンの構成要素でもありうる。
【００４３】
図３には、システム１００が実行してキャッシュ１０２をテストし修復しうる方法３００のフローチャートを示す。ＢＩＳＴエンジンは、キャッシュ１０２をテストし、もしあれば、第１の欠陥キャッシュＩＯを特定する（ステップ３０２）。ＢＩＳＲエンジン２００は、ステップ３０２において欠陥があるとして特定された（もしあれば）キャッシュＩＯのＩＤに基づいて第１のサーモメータコードを生成する（ステップ３０４）。ＢＩＳＲエンジン２００は、第１のサーモメータコードを第１の冗長レジスタ１０６ａに格納する（ステップ３０６）。これにより、第１の欠陥ＩＯ（もしあれば）を迂回するマルチプレクサ１１２ａ〜ｆの構成が選択され、それによってキャッシュ１０２の第１の修復が完了する。
【００４４】
ＢＩＳＴエンジンは、キャッシュ１０２を再びテストして、もしあれば、第２の欠陥キャッシュＩＯを特定する（ステップ３０８）。ＢＩＳＲエンジン２００は、もしあれば、ステップ３０８において欠陥として特定されたキャッシュＩＯのＩＤに基づいて第２のサーモメータコードを生成する（ステップ３１０）。ＢＩＳＲエンジン２００は、第２のサーモメータコードを第２の冗長レジスタ１０６ｂに格納する（ステップ３１２）。これにより、第２の欠陥ＩＯ（もしあれば）を迂回するマルチプレクサ１１２ａ〜ｆの構成が選択され、そうすることによってキャッシュ１０２の第２の修復が完了する。
【００４５】
ＢＩＳＴエンジンは、キャッシュ１０２を再びテストして、もしあれば、第３の欠陥キャッシュＩＯを特定する（ステップ３１４）。ＢＩＳＴエンジンが第３の欠陥キャッシュＩＯを特定した場合、図１に示すシステム１００の特定の実施形態は、２つの欠陥キャッシュＩＯの修復に限られているため、修復方法３００は障害を通知する（ステップ３１８）。このような場合、キャッシュ１０２を破棄する必要がありうる。欠陥キャッシュＩＯがさらに特定されない場合、修復方法３００は終了する（ステップ３２０）。
【００４６】
以下では、テストおよび修復方法３００を実施する技法についてさらに詳しく述べる。第１の欠陥キャッシュＩＯを特定するため（ステップ３０２）、ＢＩＳＴエンジンは、もしあれば、欠陥のある主キャッシュＩＯ１０８ａ〜ｆそれぞれのビット位置に１を格納し、欠陥のない主キャッシュＩＯ１０８ａ〜ｆそれぞれのビット位置に０を格納することにより、障害データを障害蓄積レジスタ２０２に蓄積することができる。たとえば、障害蓄積レジスタ２０２のビット位置０に１があることは、ＩＯ１１０ａに欠陥があることを示し、障害蓄積レジスタ２０２のビット位置５に１があることは、ＩＯ１１０ｆに欠陥があることを示す。したがって、障害蓄積レジスタ２０２に格納された二進数値１００００１は、ＩＯ１１０ａおよび１１０ｆに欠陥があること、および残りのＩＯ１１０ｂ〜ｅに欠陥がないことを示す。ＩＯは、他の手段によって修復することができない任意のセル、列、または行を含んでいる場合に欠陥があるとみなすことができる。
【００４７】
図８に関連してさらに詳しく以下に述べるように、第１の障害データが障害蓄積レジスタ２０２に蓄積された後に生成すべき第１のサーモメータコードの生成を開始するために、ＢＩＳＴエンジンは、サーモメータ制御ブロック（ｔｃｔｌ）２０６のｅｎｃ１＿ｓｔａｒｔ入力２０４ａに高論理値（high logical value)を伝送する。これにより、第１の障害データが障害蓄積レジスタ２０２からバス２０８（ｒｂｕｓとラベル付けされている）にダンプされ、続いて第１の線形フィードバックシフトレジスタ２１０ａ（ｌｆｓｒ１とラベル付けされている）にロードされる。
【００４８】
図４Ａに関連してさらに詳しく以下に述べるように、第１の障害データは、レジスタ２１０ａからサーモメータコード生成ブロック２１２（ｔｈｅｒｍとラベル付けされている）に一度に１ビットずつシフトされる。図６に関連してさらに詳しく以下に述べるように、サーモメータコード生成ブロック２１２は、第１のサーモメータコードを生成し、これを一度に１ビットずつ第２の線形フィードバックシフトレジスタ２１０ｂ（ｌｆｓｒ２とラベル付けされている）にシフトする。この場合、レジスタ２１０ｂは第１のサーモメータコードを含む。
【００４９】
第１のサーモメータコードは、第２のシフトレジスタ２１０ｂからｒｂｕｓバス２０８にダンプされ、第１の冗長レジスタ１０６ａにロードされる。これにより、第１のキャッシュＩＯの修復が完了する。
【００５０】
次いで、ＢＩＳＴエンジンが、サーモメータ制御ブロック２０６のｅｎｃ２＿ｓｔａｒｔ入力２０４ｂに高論理値を伝送することによって第２の符号化を開始することを除き、今述べたプロセスが繰り返される。これにより、第２のサーモメータコードが、第１の冗長レジスタ１０６ａではなく第２の冗長レジスタ１０６ｂにロードされ、そうすることによって第２のキャッシュＩＯの修復が完了する。
【００５１】
ＢＩＳＲエンジン２００の動作についての上記概観（キャッシュテストおよび修復プロセスの制御に使用される特定の制御信号すべてについては述べてはいない）について、図８に関連してさらに詳しく以下に述べる。しかし、まず、ＢＩＳＲエンジン２００の要素を含む、システム１００の要素の実施形態についてさらに詳しく述べる。
【００５２】
図４Ａ〜図４Ｂには、第１および第２の線形フィードバックシフトレジスタ２１０ａおよび２１０ｂそれぞれの内部回路の概略図を示す。当業者には既知のように、レジスタ２１０ａ〜ｂは両方とも、ＢＩＳＴ動作に使用してキャッシュテストにランダムデータを提供することができるが、これについては、２００２年４月１６日付で出願された「Method and System for Flexible Control of BIST Registers Based Upon On-Chip Events」と題する、本願と同じ所有者による特許第６，３７４，３７０Ｂ１号にさらに詳しく記載されており、これを参照によって本明細書に援用する。加えて、レジスタ２１０ａ〜ｂは、サーモメータコード生成ブロック２１２を通して障害蓄積データをシフトして、本発明の実施形態にしたがってサーモメータコードを生成することができる。
【００５３】
以下では、図４Ａを参照して、第１の線形フィードバックシフトレジスタ２１０ａの動作について述べる。レジスタ２１０ａは、入力４０６ａ（ｓｈ＿ｉｎとラベル付けされている）および出力４０６ｂ（ｓｈ＿ｏｕｔとラベル付けされている）を有する６ビットシフトレジスタ４０４を含む。レジスタ２１０ａは、２つの入力４０２ａ〜ｂを有する。図２に関連して包括的に上述したように、及び、図８に関連してさらに詳しく以下に述べるように、ＢＩＳＴエンジンがサーモメータ制御ブロック２０６のｅｎｃ１＿ｓｔａｒｔ入力２０４ａに高論理値をアサートする場合、サーモメータ制御ブロック２０６は、レジスタ２１０ａのｌ１＿ｌｏａｄ入力４０２ｂに高論理値をアサートし、こうすることによってレジスタ２１０ａに、バス２０８を介して障害蓄積レジスタｅａｃｃ２０２の内容をレジスタ４０４にロードさせる。
【００５４】
高論理値がレジスタ２１０ａのｓｈｉｆｔ入力４０２ａに存在する場合、６ビットシフトレジスタ４０４の内容は右に１ビットシフトされ、ＸＯＲゲート４０８によって生成された新しいビットがレジスタ４０４内にシフトされる。シフトレジスタ４０４の最も右側のビットは、ｓｈ＿ｏｕｔ出力４０６を通して、障害蓄積データ４１０（ｅａ＿ｄａｔａとラベル付けされている）として出される。障害蓄積データ４１０は、一度に１ビットずつ、入力としてサーモメータコード生成ブロック２１２（図６）に伝送される。
【００５５】
ＸＯＲゲート４０８の目的は、キャッシュテストのために擬似ランダムデータを生成してレジスタ４０４内に格納することである。ＸＯＲゲート４０８は、各クロックサイクルにおけるシフトレジスタ４０４によって出力されたｅａ＿ｄａｔａ４１０およびシフトレジスタ４０４の最上位ビット４４０を２つの入力として採用する。ＸＯＲゲート４０８の連続した出力はそれぞれ、ｅａ＿ｄａｔａ４１０がシフトレジスタ４０４からシフトアウトされるとき、シフトレジスタ４０４のｓｈ＿ｉｎ入力４０６ａにシフトインされる。このようにすると、キャッシュテストのために擬似ランダムデータを格納すること、およびサーモメータコード生成のために障害蓄積レジスタｅａｃｃ２０２の内容をサーモメータコード生成ブロック２１２にシフトすることの両方に、同じレジスタ４０４を使用することができる。代替として、これら２つの機能を別個の回路に分けることができ、この場合、レジスタ２１０ａは、サーモメータコード生成ブロック２１２にデータをシフトする目的のためのＸＯＲゲート４０８を含む必要がない。
【００５６】
以下では、図４Ｂを参照して、第２のシフトレジスタ２１０ｂの動作についてさらに詳しく述べる。高論理値がｓｈｉｆｔ入力４０２ａに存在する場合、６ビットシフトレジスタ４２４の内容は右に１ビットシフトされ、新しいビット４２６ａが、マルチプレクサ４３６を使用して２つのソースの一方からレジスタ４２４の最も左側のビット位置にシフトされる。
【００５７】
図８に関連してさらに詳しく以下に述べるように、信号ｌ２＿ｔｈ＿ｓｅｌ４３２が、選択入力としてマルチプレクサ４３６に提供される。信号ｌ２＿ｔｈ＿ｓｅｌ４３２が高論理値の場合、マルチプレクサ４３６は、信号ｌ２＿ｔｈ＿ｄａｔａ４３４の値を６ビットシフトレジスタ４２４への入力４２６ａとして選択する。その他の場合、マルチプレクサ４３６は、ＸＯＲゲート４２８の出力４３８をレジスタ４２４への入力４２６ａとして選択する。
【００５８】
ＸＯＲゲート４２８の目的は、キャッシュテストのために擬似ランダムデータを生成し、レジスタ４２４に格納することである。ＸＯＲゲート４２８は、各クロックサイクルにおいてシフトレジスタ４２４からシフトアウトされる最下位ビット４２６ｂおよびシフトレジスタ４２４の最上位ビット４５０を２つの入力として採用する。ＸＯＲゲート４２８の連続した出力はそれぞれ、信号ｌ２＿ｔｈ＿ｓｅｌ４３２がローの場合、各クロックサイクルにおいてシフトレジスタ４２４にシフトインされる。このようにすると、キャッシュテストのために擬似ランダムデータを格納すること、およびサーモメータコード生成ブロック２１２によって生成されたサーモメータコードの内容を格納することの両方に、同じレジスタ４２４を使用することができる。代替として、これら２つの機能を別個の回路に分けることができ、この場合、レジスタ２１０ｂは、サーモメータコード生成ブロック２１２によって生成されたサーモメータコードを格納する目的のためのＸＯＲゲート４２８を含む必要がない。
【００５９】
レジスタ４２４を通して６ビットシフトが行われると、レジスタ４２４は、冗長レジスタ１０６ａ〜ｂ（図１）の一方への格納に適したサーモメータコードを含んでいる。高論理値がｌ２＿ｄｕｍｐ信号４２２ｃに存在する場合、シフトレジスタ４２４の内容（すなわち、サーモメータコード）は、バス２０８上に運ばれ、冗長レジスタ１０６ａ〜ｂのうちの適切な冗長レジスタにロードされる。
【００６０】
図６には、サーモメータコード生成（ｔｈｅｒｍ）ブロック２１２の内部回路の概略図を示す。上に概説したように、サーモメータコード生成ブロック２１２は、障害蓄積レジスタ２０２から第１のレジスタ２１０ａに転送される障害蓄積データに基づいて、サーモメータコードを生成する。
【００６１】
サーモメータコード生成ブロック２１２は２つのセクション６０２ａ〜ｂを含む。上部セクション６０２ａは、第１のレジスタ２１０ａ（図４Ａ）から受け取った障害累積データｅａ＿ｄａｔａ４１０を採用し、ｌ２＿ｔｈ＿ｄａｔａ出力４３４上にサーモメータコードを生成することを担当する。図４Ｂに関連して上に述べたように、ｌ２＿ｔｈ＿ｄａｔａ出力４３４は、第２のレジスタ２１０ｂに入力として提供され、第２のレジスタ２１０ｂは、バス２０８を介して、生成されたサーモメータコードを冗長レジスタ１０６ａ〜ｂのうちの適切な冗長レジスタにシフトする。
【００６２】
大まかに言うと、サーモメータコード生成ブロック２１２はサーモメータコードを以下のようにして生成する。サーモメータコード生成の開始において、サーモメータ制御ブロック２０６（図２）がｔｈｅｒｍ＿ｓｔａｒｔ信号６０６をアサートし、ｌ２＿ｔｈ＿ｄａｔａ４３４を以下のように論理０にリセットする。ｔｈｅｒｍ＿ｓｔａｒｔ信号６０６は、インバータ６１８によって論理０に反転され、これが入力としてＡＮＤゲート６２２に提供されるため、ＡＮＤゲート６２２は０を出力する。ＡＮＤゲート６２２の出力０はフリップフロップ６２６のＤ（データ）入力に提供され、フリップフロップ６２６はＱ出力上に論理０を出力し、こうすることによってｌ２＿ｔｈ＿ｄａｔａ４３４をリセットする。フリップフロップ６２６は、入力としてｓｈｉｆｔ信号４０２ａおよび共通クロック信号ｃｌｋ６１０を有するＡＮＤゲート６２４の出力によってクロック駆動される。したがって、フリップフロップ６２８は、ｓｈｉｆｔ信号４０２ａが論理１の間、ｃｌｋ６１０の立ち上がりエッジでのみトリガされる。
【００６３】
第１のシフトレジスタ２１０ａから受け取った障害蓄積データｅａ＿ｄａｔａ４１０は、ｓｈｉｆｔ信号４０２ａおよびクロック信号ｃｌｋ６１０を有するＡＮＤゲート６１２の出力によってクロック駆動されるフリップフロップ６１６を通してビット単位でクロック駆動される。このため、フリップフロップ６１６は、ｓｈｉｆｔ信号４０２ａが論理１の間、ｃｌｋ６１０の立ち上がりエッジでのみトリガされる。ｅａ＿ｄａｔａ４１０の各ビットは、フリップフロップ６１６のＱ出力において連続クロックサイクルで出力される。
【００６４】
ｌ２＿ｔｈ＿ｄａｔａ信号４３４は、最初の論理１がｅａｄ６０４に出会うまで、すなわち最初の論理１が障害蓄積データｅａ＿ｄａｔａ４１０に現れるまで、論理０のままである。このような論理１の出現は、現在ｅａｄ６０４に格納されているｅａ＿ｄａｔａ４１０のビットの位置に欠陥キャッシュＩＯがあること示す。
【００６５】
このような論理１に出会うと、ｌ２＿ｔｈ＿ｄａｔａ４３４は論理１に遷移し、サーモメータコード生成ブロック２１２を通してｅａ＿ｄａｔａ４１０をシフトするプロセスの残りのクロックサイクルの間論理１のままの状態である。サーモメータコード生成ブロック２１２がこれを達成する方法を理解するために、ｅａｄ６０４が論理１を含む第１のクロックサイクルを考える。ｅａｄ信号６０４は入力としてＯＲゲート６２０に提供され、したがってＯＲゲート６２０は、ＡＮＤゲート６２２への第１の入力として論理１を出力する。ＡＮＤゲート６２２の他方の入力はインバータ６１８の出力に接続され、インバータ６１８は、サーモメータコード生成プロセスの開始後に常に論理１を出力する。そのため、ＡＮＤゲート６２２は、入力が両方とも論理１であるため論理１を出力する。ＡＮＤゲート６２２の出力は、フリップフロップ６２８を通してｌ２＿ｔｈ＿ｄａｔａ４３４に運ばれる。
【００６６】
ｌ２＿ｔｈ＿ｄａｔａ信号４３４は、ＯＲゲート６２０にフィードバックされるため、サーモメータコード生成プロセスの残りのクロックサイクルの間論理１のままの状態である。一旦ｌ２＿ｔｈ＿ｄａｔａ信号４３４が上に述べたプロセスを通して論理１の値を得ると、このフィードバックループにより、ＯＲゲート６２０が次のクロックサイクルで論理１を出力することが保証され、またこれにより、ｌ２＿ｔｈ＿ｄａｔａ信号４３４が次のクロックサイクルで論理１の値を有することが保証され、以下同様である。
【００６７】
上に述べたプロセスの結果として、ｌ２＿ｔｈ＿ｄａｔａ４３４は、障害がｅａｄ６０４によって示される最初のビット位置まで論理０を含み、そのビット位置から始まってその後は論理１を含むことになる。たとえば、ｅａｄ６０４が二進数値００００１０を含む場合、ｌ２＿ｔｈ＿ｄａｔａ４３４は、サーモメータコード生成プロセス完了時には二進数サーモメータコード値１１１１１０を含むことになる。ｅａｄ６０４が二進数値００００００を含む場合、ｌ２＿ｔｈ＿ｄａｔａ４３４は、サーモメータコード生成プロセス完了時には二進数サーモメータコード値００００００を含むことになる。ｅａｄ６０４が二進数値１０００００を含む場合、ｌ２＿ｔｈ＿ｄａｔａは、サーモメータコード生成プロセス完了時には二進数サーモメータコード値１０００００を含むことになる。言い換えれば、上部セクション６０２ａの動作により、先に述べたフォーマットを有するサーモメータコードが生成される。
【００６８】
サーモメータコード生成ブロック２１２の上部セクション６０２ａの動作について述べたが、以下では、サーモメータコード生成ブロック２１２の下部セクション６０２ｂについて述べる。下部セクション６０２ｂはカウンタであり、その目的は、上部セクション６０２ａを通して障害蓄積データｅａ＿ｄａｔａ４１０の６ビットすべてをシフトするために必要な６つのクロックサイクルをカウントし、それにより完全なサーモメータコードを生成することである。
【００６９】
具体的には、下部セクション６０２ｂは、７でカウントを開始し、各クロックサイクルで減分されて０に到達するカウンタを実施し、０に到達した時点で、下部セクション６０２ｂはｔｈｅｒｍ＿ｓｔｏｐ出力６０８上に論理１をアサートし、そうすることによってサーモメータ制御ブロック２０６にｓｈｉｆｔ信号４０２ａをディアサートさせ、これにより、サーモメータコード生成プロセスが終了する。
【００７０】
より具体的には、下部セクション６０２ｂは、ｔｈｅｒｍ＿ｓｔａｒｔ信号６０６を選択入力として受け取るマルチプレクサ６３０を含む。サーモメータ制御ブロック２０６がｔｈｅｒｍ＿ｓｔａｒｔ信号６０６をアサートしてサーモメータコード生成プロセスを開始すると、ｔｈｅｒｍ＿ｓｔａｒｔ信号６０６は、マルチプレクサ６３０に、値７にハードワイヤードされた（すなわちハードウエア的に固定された）カウンタ開始信号６３２を選択させ、こうすることによって、下部セクション６０２ｂによって実施されるカウンタを７（すなわち、シフトするビット数に１を足したもの）にリセットする。
【００７１】
マルチプレクサ６３０の出力は、下部セクション６０２ｂによって実施されるカウンタの現在値を表す３ビット値である。現在のカウンタ値は、共通クロック信号ｃｌｋ６１０によりフリップフロップを通してクロック駆動される。現在のカウンタ値の３ビット６３４ａ〜ｂがＮＯＲゲート６３６に入力され、ＮＯＲゲート６３６は、ビット６３４ａの３つすべてが０に等しい場合（すなわち、カウンタの現在値が０に等しい場合）にのみ論理１を出力する。ＮＯＲゲート６３６の出力は、第１の入力としてＡＮＤゲート６３８に提供され、ＡＮＤゲート６３８は、他方の入力としてクロック駆動された（クロックに同期駆動された）ｓｈｉｆｔ信号４０２ａを受け取る。したがって、ＡＮＤゲート６３８は、カウンタの現在値が非ゼロである（または、ｓｈｉｆｔの値が０に等しい）場合は、ｔｈｅｒｍ＿ｓｔｏｐ６０８上に論理０を出力し、カウンタの現在値が０に等しく、及びｓｈｉｆｔ４０２ａの値が１に等しい場合は、ｔｈｅｒｍ＿ｓｔｏｐ６０８上に論理１を出力する。
【００７２】
減分ブロック６４２は、フリップフロップ６３２の出力に現れる現在のカウンタ値を減分し、減分されたカウンタ値をマルチプレクサ６３０にフィードバックする。一旦サーモメータコード生成ブロック２１２が開始されると、ｔｈｅｒｍ＿ｓｔａｒｔ信号６０６は低論理値に戻り、これによってマルチプレクサ６３０に減分ブロック６４２の出力をフリップフロップ６３２に提供させる。このようにして、下部セクション６０２によって実施されるカウンタは、各クロックサイクルで減分される。
【００７３】
まとめると、サーモメータ制御ブロック２０６によるｔｈｅｒｍ＿ｓｔａｒｔ信号６０６のアサートに応答して、下部セクション６０２ｂはカウンタを７に初期化し、各クロックサイクルでカウンタを減分する。このような各クロックサイクル中、上部セクション６０２ａは、障害蓄積データｅａ＿ｄａｔａ４１０の１ビットを第２のシフトレジスタ２１０ｂにシフトする。下部セクション６０２ｂはカウントダウンし続けてカウンタが０に到達し、この時点で、下部セクション６０２ｂはｔｈｅｒｍ＿ｓｔｏｐ信号６０８をアサートし、こうすることによってサーモメータ制御ブロック２０６にｓｈｉｆｔ信号４０２ａをディアサートさせ、またこれにより下部セクション６０２ｂにカウントを停止させるとともに、上部セクション６０２ａに障害蓄積データｅａ＿ｄａｔａ４１０のビットを第２のシフトレジスタ２１０ｂにシフトすることを停止させる。
【００７４】
図７には、上に述べた技法に従ったサーモメータコードを生成する方法７００のフローチャートを示す。たとえば、方法７００は、図３に示す方法３００のステップ３０４を実施することができる。具体的には、方法７００は、サーモメータコードを生成するために、シフトレジスタ２１０ａ〜ｂと併せてサーモメータコード生成（ｔｈｅｒｍ）ブロック２１２によって行われる機能を示す。
【００７５】
方法７００は、カウンタＣをｎｍａｘ＋１の値に初期化する。ここにおいて、ｎｍａｘは生成すべきサーモメータコードのビット数（たとえば、キャッシュ１０２中の主キャッシュＩＯ１０８ａ〜ｆの数）である（ステップ７０２）。たとえば、サーモメータコード生成ブロック２１２（図６）の下部セクション６０２ｂに関連して上に述べたように、ハードワイヤード信号６３２を使用してカウンタＣを値７に初期化することができる。方法７００はまた、ｌ２＿ｔｈ＿ｄａｔａの値を０に初期化する（ステップ７０４）。たとえば、サーモメータコード生成ブロック２１２（図６）の上部セクション６０２ａに関連して上に述べたように、サーモメータコード生成プロセス開始時に、ｔｈｅｒｍ＿ｓｔａｒｔ信号６０６に高論理値が提供されると、信号ｌ２＿ｔｈ＿ｄａｔａを０に初期化することができる。
【００７６】
方法７００は、ビット位置（ｎｍａｘ＋１）−Ｃにおける障害蓄積データｅａｃｃ２０２のビットが０に等しいか否かを判定する（ステップ７０６）。たとえば、Ｃが７に等しい場合、（ｎｍａｘ＋１）−Ｃは０に等しく、Ｃが６に等しい場合、（ｎｍａｘ＋１）−Ｃは１に等しく、Ｃが５に等しい場合、（ｎｍａｘ＋１）−Ｃは２に等しい。したがって、カウンタＣが最大値（ｎｍａｘ＋１）から減分されると、方法７００がビット０から始まって上位のビット位置へ（すなわち、右から左に移動するように）カウントし、ｅａｃｃ２１２におけるビットを検査することを理解されたい。これは、ｅａ＿ｄａｔａ４１０の各ビットをレジスタ２１０ａからサーモメータコード生成ブロック２１２にシフトすることによって、システム１００において実施される。
【００７７】
ビット位置（ｎｍａｘ＋１）−Ｃにおける障害蓄積データｅａｃｃ２０２のビットが０に等しい場合、方法７００は、ｌ２＿ｔｈ＿ｄａｔａの現在値をサーモメータコードのビット（ｎｍａｘ＋１）−Ｃとして出力する（ステップ７０８）。たとえば、ｌ２＿ｔｈ＿ｄａｔａの現在値が０である場合、ステップ７０８において値０が出力される。しかし、ｌ２＿ｔｈ＿ｄａｔａの現在値が１の場合、ステップ７０８において値１が出力される。この機能は主に、サーモメータコード生成ブロック２１２の上部セクション６０２ａ中のＯＲゲート６２０（フィードバックループを含む）を使用して実施され、障害蓄積データｅａｃｃ２０２に最初の論理１が現れるまで、サーモメータコード生成ブロック２１２によって出力されるサーモメータコードが論理０を含むことを保証する。
【００７８】
ビット位置（ｎｍａｘ＋１）−Ｃにおける障害蓄積データｅａｃｃ２０２のビットが１に等しい場合、方法７００は、値１をｌ２＿ｔｈ＿ｄａｔａに割り振り（ステップ７１０）、次に、ｌ２＿ｔｈ＿ｄａｔａの現在値（すなわち、１）をサーモメータコードのビット（ｎｍａｘ＋１）−Ｃとして出力する（ステップ７０８）。この機能は主に、サーモメータコード生成ブロック２１２の上部セクション６０２ａ中のＯＲゲート６２０（フィードバックループを含む）を使用して実施され、サーモメータコード生成ブロック２１２によって出力されるサーモメータコードが、障害蓄積データｅａｃｃ２０２において論理１に出会う最初のビット位置から始まる論理１を含むことを保証する。
【００７９】
方法７００は、サーモメータコード生成ブロック２１２の下部セクション６０２ｂ中の減分ブロック６４２によって実施されるように、カウンタＣを減分する（ステップ７１２）。方法７００は、サーモメータコード生成ブロック２１２の下部セクション６０２ｂ中のＮＯＲゲート６３６によって実施されるように、カウンタＣが０に等しいか否かを判定する（ステップ７１４）。Ｃが０に等しくない場合、ステップ７０６〜７１４が繰り返されて、サーモメータコード中の次のビットが生成される。その他の場合、サーモメータコードの生成が完了し、方法７００が終了する。
【００８０】
再び図２を参照すると、サーモメータ制御ブロック２０６は、ＢＩＳＲエンジン２００のその他の要素を制御してキャッシュ修復を行う。図８には、サーモメータ制御ブロックｔｃｔｌ２０６（図２）の有限状態マシン８００を状態図の形で示す。以下、状態図８００に関連して、ｔｃｔｌブロック２０６の状態遷移および出力について述べる。サーモメータ制御ブロックｔｃｔｌ２０６とＢＩＳＲエンジン２００の他の要素との間の信号接続は図２に示されていないが、当業者は、その他の図面および本明細書に提供される説明を用いてそのような接続の実施の仕方を理解しよう。
【００８１】
状態マシン８００は休止状態８０２で開始され、ｅｎｃ１＿ｓｔａｒｔ２０４ａあるいはｅｎｃ２＿ｓｔａｒｔ２０４ｂのいずれかでＢＩＳＴエンジンから論理１を受け取るまで、休止状態８０２のままである（８１２）。論理１をｅｎｃ１＿ｓｔａｒｔ２０４ａで受け取った場合、状態マシン８００はｓｔａｒｔ１状態８０４に遷移し（８１４）、出力ｌ１＿ｌｏａｄ４０２ｂ（図４Ａ）およびｅａ＿ｄｕｍｐ２１４（図２）が論理１に駆動される。これにより、障害蓄積（eacc）レジスタ２０２の内容が、第１の線形フィードバックシフトレジスタ（1fsr1）２１０ａの６ビットシフトレジスタ４０４にロードされる。次に、状態マシン８００は、無条件でｅｎｃ１状態８０６に遷移し（８１６）、出力ｔｈｅｒｍ＿ｓｔａｒｔ６１０（図６）、ｓｈｉｆｔ４０２ａ（図４Ａ〜図４Ｂおよび図６）、およびｌ２＿ｔｈ＿ｓｅｌ４３２（図４Ｂ）が論理１に駆動される。これにより、サーモメータコード生成（ｔｈｅｒｍ）ブロック２１２がリセットされ、障害データｅａ＿ｄａｔａ４１０が第１の線形フィードバックシフトレジスタ２１０ａからサーモメータコード生成ブロック２１２へのシフトを開始するようにする。上に述べたように、サーモメータコードは、ｓｈｉｆｔ４０２ａがハイの各クロックサイクルでサーモメータコード生成ブロック２１２から第２の線形フィードバックシフトレジスタ（lfsr2）２１０ｂにシフトされる。状態マシン８００はｅｎｃ１状態８０６のまま（８１８）であり、引き続きｓｈｉｆｔ４０２ａおよびｌ２＿ｔｈ＿ｓｅｌ４３２を論理１に駆動し、そうすることによって第１のサーモメータコードを生成させる。しかし、ｔｈｅｒｍ＿ｓｔａｒｔ信号６０６は、ｓｔａｒｔ１状態８０４からｅｎｃ１状態８０６への遷移（８１６）中、最初は論理１としてアサートされた後、論理０に戻る。
【００８２】
状態マシンは、入力ｔｈｅｒｍ＿ｓｔｏｐ６０８上で論理１を受け取るまでｅｎｃ１状態８０６のまま（８１８）である。図６に関連して上に述べたように、ｔｈｅｒｍブロック２１２の下部セクション６０２ｂは、サーモメータコードの生成が完了すると、ｔｈｅｒｍ＿ｓｔｏｐ信号６０８をアサートする。この時点で、状態マシン８００は休止状態８０２に戻り（８２０）、出力ｌ２＿ｄｕｍｐ４２２ｃ（図４Ｂ）およびｒ１＿ｌｏａｄ（図２）が論理１に駆動される。これにより、第２の線形フィードバックシフトレジスタ２１０ｂにおいて作成された第１のサーモメータコードが第１の冗長レジスタｒｅｄ１  １０６ａにロードされ、これにより第１のキャッシュ修復が完了する。
【００８３】
状態マシン８００は、第２の冗長レジスタ１０６ｂに格納された第２のサーモメータコードの生成に関してほとんど同じ様式で動作する。具体的には、マシン８００は休止状態８０２で始まり、ｅｎｃ２＿ｓｔａｒｔ２０４ｂにおいてＢＩＳＴエンジンから論理１を受け取るまで、休止状態８０２のままである（８１２）。ｅｎｃ２＿ｓｔａｒｔ２０４ｂで論理１を受け取ると、状態マシン８００はｓｔａｒｔ２状態８０８に遷移し（８１４）、出力ｌ１＿ｌｏａｄ４０２ｂ（図４Ｂ）およびｅａ＿ｄｕｍｐ２１４（図２）は論理１に駆動される。これにより、障害蓄積レジスタ２０２の内容が第１の線形フィードバックシフトレジスタ２１０ａの６ビットシフトレジスタ４０４にロードされる。次に、状態マシン８００は、無条件にｅｎｃ２状態８１０に遷移し（８２４）、出力ｔｈｅｒｍ＿ｓｔａｒｔ６１０（図６）、ｓｈｉｆｔ４０２ａ（図４Ａ〜図４Ｂおよび図６）、ならびにｌ２＿ｔｈ＿ｓｅｌ４３２（図４Ｂ）が論理１に駆動される。これにより、ｔｈｅｒｍブロック２１２がリセットされ、障害データｅａ＿ｄａｔａ４１０が第１の線形フィードバックシフトレジスタ２１０ａからサーモメータコード生成ブロック２１２へのシフトを開始するようにする。上に述べたように、サーモメータコードは、ｓｈｉｆｔ４０２ａがハイの各クロックサイクルで、サーモメータコード生成ブロック２１２から第２の線形フィードバックシフトレジスタ２１０ｂにシフトする。状態マシン８００はｅｎｃ２状態８１０のままであり（８２６）、ｓｈｉｆｔ４０２ａおよびｌ２＿ｔｈ＿ｓｅｌ４３２を引き続き論理１に駆動し、そうすることによって第２のサーモメータコードを生成させる。しかし、ｔｈｅｒｍ＿ｓｔａｒｔ信号６０６は、ｓｔａｒｔ２状態８０８からｅｎｃ２状態８１０への遷移（８２４）中、最初は論理１としてアサートされた後、論理０に戻る。
【００８４】
状態マシン８００は、入力ｔｈｅｒｍ＿ｓｔｏｐ６０８で論理１を受け取るまでｅｎｃ２状態８１０のままである（８２６）。この時点で、状態マシン８００は休止状態８０２に戻り（８２８）、出力ｌ２＿ｄｕｍｐ４２２ｃ（図４Ｂ）およびｒ２＿ｌｏａｄ２１８（図２）が論理１に駆動される。これにより、第２の線形フィードバックシフトレジスタ２１０ｂにおいて作成された第２のサーモメータコードを第２の冗長レジスタｒｅｄ２  １０６ｂにロードさせる。
【００８５】
再び図１を参照すると、冗長合法化ブロック１０４は、６つの冗長合法化セル１１４ａ〜ｆを含む。さらに詳しく以下に述べるように、冗長合法化セル１１４ａ〜ｆは、必要であれば、冗長レジスタ１０６ａ〜ｂに格納されているビット値を変更して、合法的な入力のみが選択入力としてマルチプレクサ１１２ａ〜ｆに提供されることを保証する。もし、システム１００が、冗長レジスタ１０６ａ〜ｂ中の対応するビット対が非合法的なマルチプレクサ選択値を決して表さないように設計されるならば、冗長合法化セル１１４ａ〜ｆは必要ないであろう。
【００８６】
各冗長合法化セル１１４ａ〜ｆは、冗長レジスタ１０６ａ〜ｂの対応するビットに接続される。具体的には、各冗長合法化セル１１４ａ〜ｆは、ｉｎ、ｊｎおよびｋｎとラベル付けされる３つの入力を有する。ここにおいて、ｎは冗長合法化セルのビットインデックスである。各冗長合法化セル１１４ａ〜ｆのｉｎ入力は、第１の冗長レジスタ１０６ａのビットｎに接続され、各冗長合法化セル１１４ａ〜ｆのｊｎ入力は、第２の冗長レジスタ１０６ｂのビットｎに接続される。たとえば、冗長合法化セル１１４ａのｉ０入力は、冗長レジスタ１０６ａのビット０に接続され、冗長合法化セル１１４ａのｊ０入力は、冗長レジスタ１０６ｂのビット０に接続される。
【００８７】
各冗長合法化セル１１４ａ〜ｅのｋｎ入力は、第１の冗長レジスタ１０６ａのビットｎ＋１に接続される。たとえば、冗長合法化セル１１４ａのｋ０入力は、冗長レジスタ１０６ａのビット１に接続され、冗長合法化セル１１４ｂのｋ１入力は、冗長レジスタ１０６ａのビット２に接続され、以下同様である。冗長合法化セル１１４ｆのｋ５入力は接地される。
【００８８】
図５Ａに、冗長合法化セル１１４ａの内部回路の概略図を示す。その他の冗長合法化セル１１４ｂ〜ｆも同じ内部回路を有しうることを理解されたい。大まかに言うと、図５Ａに示す組み合わせロジックは、２つの出力ｒａｍ＿ｒｅｄ１［０］５０２ａおよびｒａｍ＿ｒｅｄ２［０］５０２ｂを生成し、これらの出力はキャッシュ１０２中のＩＯ冗長マルチプレクサ１１２ａに接続される。出力ｒａｍ＿ｒｅｄ１［０］５０２ａおよびｒａｍ＿ｒｅｄ２［０］５０２ｂは、ｒｅｄ１［０］１１６ａおよびｒｅｄ２［０］１１８ａ（図１）それぞれの合法化された値を表す。ｒｅｄ１［０］１１６ａおよびｒｅｄ２［０］１１８ａがマルチプレクサ１１２ａに対する合法的な選択入力値を表していない場合、ｒａｍ＿ｒｅｄ１［０］５０２ａおよびｒａｍ＿ｒｅｄ２［０］５０２ｂの値は、ｒｅｄ１［０］１１６ａおよびｒｅｄ２［０］１１８ａそれぞれの値と同じである。
【００８９】
これより、冗長合法化ブロック１１４ａ〜ｆの目的および動作について、さらに詳しく述べる。図１に関連して上に述べたように、マルチプレクサ１１２ａ〜ｆに対して３つの合法選択入力値しかない。すなわち、０（二進数００）、１（二進数０１）および３（二進数１１）の３つである。値が０の場合、マルチプレクサの最も右側の入力が選択され、値が１の場合、マルチプレクサの中央の入力が選択され、値が３の場合、マルチプレクサの最も左側の入力が選択される。２の値（二進数１０）は、図１に示す実施形態では、マルチプレクサ１１２ａ〜ｆに対する合法的な選択入力ではない。二進数値１０をマルチプレクサ１１２ａ〜ｆの１つへの選択入力として提供すると、たとえば、マルチプレクサ１１２ａ〜ｆがまるで二進数選択値００が提供されたかのように振る舞う場合があり、それによって誤った結果がもたらされうる。このため、マルチプレクサ１１２ａ〜ｆに選択入力として二進数値１０が決して提供されないように保証する必要がある。
【００９０】
キャッシュ１０２中のメモリおよびメモリをテストするＢＩＳＴエンジンが完全な信頼性を有する場合には、２つの冗長レジスタ１０６ａ〜ｂ中の対応するビットは二進数値１０を決して形成せず、冗長合法化ブロック１０４は必要ないであろう。しかし、上に述べた技法が、二進数値１０を形成する冗長レジスタ１０６ａ〜ｂ中の対応するビットを生成する可能性がある。合法化ブロック１０４中の冗長合法化セル１１４ａ〜ｆによって行われる機能は、二進数値１０が選択入力としてマルチプレクサ１１２ａ〜ｆのいずれにも決して提供されないことを保証することである。
【００９１】
上に開示した技法を用いて、どのようにして、非合法的な二進数１０がマルチプレクサ１１２ａ〜ｆの１つまたは複数への選択入力として生成されるのかを理解するために、ＢＩＳＴエンジンがキャッシュ１０２のメモリアレイを二度テストする（ステップ３０２および３０８）ことを想起されたい。最初のテスト中、キャッシュＩＯ障害情報が障害蓄積レジスタ２０２に蓄積され、第１の冗長レジスタ１０６ａにおけるサーモメータコード生成に使用される（ステップ３０４）。特定のキャッシュＩＯの一部のみが故障している場合（部分的に故障している場合）、第１のテスト中に（すなわち、ステップ３０２において）ＢＩＳＴエンジンがそのキャッシュＩＯを故障と特定しない可能性がある。このため、ステップ３０４において生成され、第１の冗長レジスタ１０６ａに格納された（ステップ３０６）サーモメータコードは、その部分的に故障したキャッシュＩＯに対応するビット位置に（誤って）０を含むことになる。
【００９２】
このような場合では、第２のテスト中に（ステップ３０８）、ＢＩＳＴエンジンがその部分的に故障したキャッシュＩＯを欠陥として特定する可能性がある。この場合、ステップ３１０において生成され、ステップ３１２において第２の冗長レジスタ１０６ｂに格納されるサーモメータコードは、その部分的に故障したキャッシュＩＯに対応するビット位置に１を含むことになる。これにより上に述べた状況が発生し、第１および第２の冗長レジスタ１０６ａ〜ｂの対応するビット位置で、マルチプレクサ１１２ａ〜ｆへの選択入力として非合法的な二進数値１０（十進数２）が形成されることになる。このような場合は、部分的に欠陥のある（すなわち、一部に欠陥のある）ＩＯを完全に故障したものとして取り扱い、そうして本明細書に開示する技法を用いて修復することが望ましい。このため、第１および第２の冗長レジスタ１０６ａ〜ｂに格納されている値をマルチプレクサ１１２ａ〜ｆに直接提供することは、マルチプレクサ１１２ａ〜ｆをして、キャッシュ１０２を適切に修復させることにならない。
【００９３】
合法化ブロック１０４は、必要であれば、二進数値１０が選択入力としてマルチプレクサ１１２ａ〜ｆのいずれにも決して提供されないように、冗長レジスタ１０６ａ〜ｂに格納されているサーモメータコードを変更する。より具体的には、合法化ブロック１０４は、二進数値１０が、冗長レジスタ１０６ａ〜ｂ中の対応するビットの組み合わせで発生したときには常に、二進数値１０を、いずれもマルチプレクサ１１２ａ〜ｆへの合法的な選択入力値である二進数値０１または二進数値１１に変更する（すなわち、合法化する）。冗長合法化セル１１４ａ〜ｆは、いずれの変更が対応するマルチプレクサに正しい入力を選択させるかによって、発生した任意の二進数値１０を二進数０１あるいは二進数１１に変更する機能を実行する。
【００９４】
ここで、本発明の１実施形態に従って、冗長レジスタ１０６ａ〜ｂに格納されているサーモメータコードを合法化する、冗長合法化セル１１４ａ〜ｆの動作について述べる。本発明の１実施形態による冗長合法化セル１１４ａの内部回路を示す図５Ａを再び参照する。図１に関連して上に述べたように、冗長合法化セル１１４ａは入力ｉ０（第１の冗長レジスタ１０６ａのビット０  １１６ａに格納されている値を受け取る）、入力ｊ０（第２の冗長レジスタ１０６ｂのビット０  １１８ａに格納されている値を受け取る）および入力ｋ０（第１の冗長レジスタ１０６ａのビット１  １１６ｂに格納されている値を受け取る）を含む。
【００９５】
第１のＯＲゲート５０２は、ｉ０入力とｊ０入力との論理和をとることによってｒａｍ＿ｒｅｄ１信号１３２ａを生成する。その結果、ｒａｍ＿ｒｅｄ１信号１３２ａは、ｉ０入力あるいはｊ０入力のいずれか一方が論理１に等しい場合、論理１に等しい。
【００９６】
第２のＯＲゲート５０４は、ｉ０入力とｋ０入力との論理和をとることによって出力５０８を生成する。第２のＯＲゲート５０４の出力５０８は、入力としてＡＮＤゲート５０６に提供され、ＡＮＤゲート５０６は、ｊ０入力と第２のＯＲゲート５０４の出力５０８との論理積をとることによってｒａｍ＿ｒｅｄ２信号１３２ｂを生成する。
【００９７】
図５Ａに示す回路の動作を把握するため、また二進数値１０を二進数値０１または二進数値１０に変更することによって合法化する方法を理解するため、ここで、図５Ａに示される回路によって実行される機能を表す方法５２０のフローチャートを示す図５Ｂを検討する。方法５２０は、マルチプレクサ１１２ａに提供される選択入力値を合法化するが、同じ技法を、その他のマルチプレクサ１１２ｂ〜ｆに提供される選択値の合法化に適用することができる。方法５２０は、２つの２ビット初期選択値ＳｎおよびＳｎ＋１を受け取る（ステップ５２２）。ここで、ｎは方法５２０を実行している冗長合法化セルのビットインデックスである。たとえば、冗長合法化セル１１４ａの場合はｎ＝０であり、冗長合法化セル１１４ｂの場合はｎ＝１である。たとえば、冗長合法化セル１１４ａが受け取る２ビット初期選択値は、ｒｅｄ２［０］１１８ａ（入力ｊ０上）およびｒｅｄ１［０］１１６ａ（入力ｉ０上）によって形成される２ビット値である。
【００９８】
方法５２０は、初期選択値Ｓｎが二進数１０に等しいか否かを判定する（ステップ５２４）。初期選択値Ｓｎが二進数１０に等しくない場合、方法５２０は、初期選択値Ｓｎを合法化された選択値として対応するマルチプレクサ１１２ａに出力する（ステップ５３６）。言い換えれば、初期選択値Ｓｎは、合法的な選択値、すなわち二進数００、０１または１１のいずれかである場合、変更されることなくマルチプレクサ１１２ａに選択値として提供される。この機能は、図５ＡにおけるＯＲゲート５０２およびＡＮＤゲート５０６によって実施される。
【００９９】
初期選択値Ｓｎが二進数１０に等しい場合、ｂｉｔ［０］におけるキャッシュＩＯ（すなわち、キャッシュＩＯ１０８ａ）は少なくとも部分的に欠陥がある。このような場合、対応するマルチプレクサ１１２ａは、中央の入力１２０ｂまたは最も左側の入力１２０ｃのいずれか一方を選択して、非欠陥キャッシュＩＯを選択しなければならない。マルチプレクサ１１２ａが中央入力１２０ｂを選択すべきか、それとも最も左側の入力１２０ｃを選択すべきかは、ｂｉｔ［１］におけるキャッシュＩＯ１０８ｂが欠陥か否かによって決まる。ｂｉｔ［１］におけるキャッシュＩＯ１０８ｂが欠陥ではない場合、マルチプレクサ１１２ａは中央の入力１２０ｂを選択して、キャッシュＩＯ１０８ａをキャッシュＩＯ１０８ｂで置き換えることができ、そうでない場合は、マルチプレクサ１１２ａは、最も左側の入力１２０ｃを選択して、キャッシュＩＯ１０８ａをキャッシュＩＯ１０８ｃで置き換えなければならない。
【０１００】
マルチプレクサ１１２ａが中央の入力１２０ｂを選択するか、それとも最も左側の入力１２０ｃを選択するかに関わりなく、（中央の入力１２０ｂを選択する）二進数０１のロービットおよび（最も左側の入力１２０ｃを選択する）二進数１１のロービットが１であるため、選択値のロービットは１である。したがって、方法５２０は、選択値Ｓｎのロービットを１にセットする（ステップ５２８）。
【０１０１】
ステップ５２８は、図５Ａに示す回路によって以下のように実施される。Ｓｎ＝１０の場合、ＯＲゲート５０２への入力は１および０である。したがって、ＯＲゲート５０２は、論理１をｒａｍ＿ｒｅｄ１［０］１３２ａの値として出力し、それによりステップ５２８を実施する。
【０１０２】
方法５２０は、続く初期選択値Ｓｎ＋１（たとえば、入力ｋ０に提供されるｒｅｄ１［１］１１６ｂの値）のロービットが１に等しいか否かを判定する（ステップ５３０）。たとえば、ｎ＝０およびＳｎ＝１０の場合の状況を考える。
【０１０３】
方法５２０は、選択値Ｓｎのハイビットを以下のようにセットすることにより、マルチプレクサ１１２ａが中央の入力１２０ｂを選択すべきか、それとも最も左側の入力１２０ｃを選択すべきかを判定する。続く初期選択値Ｓｎ＋１のロービットが０に等しい場合、ｂｉｔ［ｎ＋１］におけるキャッシュＩＯ（たとえば、キャッシュＩＯ１０８ｂ）は欠陥ではなく、マルチプレクサ１１２ａは、キャッシュＩＯ１０８ａをキャッシュＩＯ１０８ｂで置き換えることができる。したがって、このような場合、方法５２０は、選択値Ｓｎのハイビットを０にセットし、選択値を二進数０１に等しくし、こうすることによってマルチプレクサの中央の入力１２０ｂを介してキャッシュＩＯ１０８ｂを選択する（ステップ５３２）。
【０１０４】
続く初期選択値Ｓｎ＋１のロービットが１に等しい場合、ｂｉｔ［ｎ＋１］におけるキャッシュＩＯ（たとえば、キャッシュＩＯ１０８ｂ）は欠陥であり、またマルチプレクサ１１２ａはキャッシュＩＯ１０８ａをキャッシュＩＯ１０８ｃで置き換えなければならない。したがって、このような場合、方法５２０は、選択値Ｓｎのハイビットを１にセットし、選択値を二進数１１に等しくし、こうすることによってマルチプレクサの最も左側の入力１２０ｃを介してキャッシュＩＯ１０８ｃを選択する（ステップ５３４）。
【０１０５】
ステップ５３０〜５３４は、図５Ａに示す回路によって以下のように実施される。Ｓｎ＝１０の場合は常に、ＯＲゲート５０４への第１の入力は０になる。したがって、ＯＲゲート５０４の出力は、ｋ０の値に依存し、ｋ０に等しく、ｋ０は、本例では、ｒｅｄ１［１］１１６ｂの値である。ＯＲゲート５０４の出力は、ＡＮＤゲート５０６の第２の入力に接続される。ＡＮＤゲート５０６の第１の入力は、Ｓｎ＝１０のとき、１の値を受け取る。したがって、ＡＮＤゲート５０６の出力もまたｋ０の値に依存し、ｋ０に等しい。ＯＲゲート５０４およびＡＮＤゲート５０６両方の出力はｋ０の値に等しいため、ＡＮＤゲート５０６によりｒａｍ＿ｒｅｄ２［０］として出力されるＳｎ［１］の値は、Ｓｎが最初に１０に等しい場合は常に、ｋ０の値に等しい。こうして、図５Ａに示す回路は、ｋ０の値をＳｎ［１］に割り振るステップ５３０〜５３４を実施する。
【０１０６】
図５Ｂを再び参照すると、上に述べたステップが完了すると、選択値Ｓｎが合法化されている。方法５２０は、合法化された選択値Ｓｎをマルチプレクサ１１２ａへの選択入力として出力する（ステップ５３６）。そうして、合法化された選択値Ｓｎは、二進数値１０を決して持たず、それによってマルチプレクサ１１２ａに、キャッシュＩＯ１０８ａと置き換えるキャッシュＩＯ１０８ｂ〜ｃのうちの適切なものを選択する選択値が提供されることが保証される。
【０１０７】
本発明の利点には、以下の１つまたは複数のものがある。一態様では、本発明は、複数の冗長ＩＯを有するキャッシュの修復ソリューションを生成する技法を有利に提供する。具体的には、本発明の実施形態は、マルチプレクサ１１２ａ〜ｆが最大で２つの予備ＩＯ１０８ｇ〜ｈで主キャッシュＩＯ１０８ａ〜ｆの欠陥のある最大で２つのキャッシュＩＯを修復することができるように、マルチプレクサ１１２ａ〜ｆに選択入力を自動的に提供する技法を提供する。複数の欠陥キャッシュＩＯを修復する能力は、１つの欠陥ＩＯしか修復することができないシステムと比較して大きな利点を提供する。これは、２つの欠陥ＩＯを修復する能力により、そのような能力がない場合には廃棄する必要のあった２つの欠陥ＩＯを有するキャッシュを使用可能にすることができるためである。さらに、最大で２つの欠陥ＩＯの修復ソリューションを自動的に生成する能力により、製造工程の一部として、またさらには、後のキャッシュの通常動作中に、このような修復を迅速かつ容易に行うことが可能になる。
【０１０８】
本発明の各種実施形態の別の利点は、部分的に欠陥のあるＩＯを修復する技法を提供することである。たとえば、図５Ａ〜図５Ｂに関連して上述したように、合法化ブロック１０４は、システム１００が、ＢＩＳＴエンジンによって一貫しては欠陥として特定されないＩＯを首尾よく修復できるようにする。具体的には、２つの欠陥ＩＯはそれぞれ、２つのテストパスの少なくとも一方で欠陥として特定される限り、合法化ブロック１０４により、最大で２つの欠陥キャッシュＩＯを修復することが可能である。部分的に欠陥のあるＩＯを修復する能力により、システム１００を使用してキャッシュ１００を修復し、それによって製造歩留まりを上げることができる環境の範囲が広がる。
【０１０９】
本発明を特定の実施形態に関して上に説明したが、上記実施形態は単なる例示として提供されたものであり、本発明の範囲を限定または規定するものではないことを理解されたい。他の各種実施形態（以下に記載するものを含むがそれらには限定されない）も特許請求の範囲内に入る。
【０１１０】
本明細書に述べた要素およびコンポーネントは、同じ機能を実行するさらなるコンポーネントにさらに分けることもできく、一緒に組み合わせてより少ない数のコンポーネントを形成することもできる。たとえば、線形フィードバックシフトレジスタ２１０ａ〜ｂ、サーモメータコード生成（ｔｈｅｒｍ）ブロック２１２、および障害蓄積レジスタｅａｃｃ２０２（図２）を組み合わせて、同じ機能を実行するより少数のコンポーネントにしてもよく、またはより多数のコンポーネントにさらに分けてもよい。
【０１１１】
キャッシュ１０２は６つの主キャッシュＩＯ１０８ａ〜ｆを有するものとして示されているが、これは本発明の限定要件ではない。キャッシュ１０２は任意の数の主キャッシュＩＯを含むことができる。さらに、キャッシュ１０２は２つの予備（冗長）ＩＯ１０８ｇ〜ｈを有するものとして示されているが、これも本発明の限定要件ではない。キャッシュ１０２は、代替として、３つ以上の予備ＩＯを含むことができる。
【０１１２】
合法化ブロック１０４は、他の技法を採用して、マルチプレクサ１１２ａ〜ｆに常に合法的な選択入力が提供されることが保証される場合、または他の技法を採用して、マルチプレクサ１１２ａ〜ｆが、冗長レジスタ１０６ａ〜ｂに格納されているサーモメータコードに応答して適切に動作することが保証される場合は省くことができる。さらに、マルチプレクサ１１２ａ〜ｆの入力は十進数０、１、および３を使用して付番されているが、これは本発明の限定要件ではない。代替として、他の付番方式を用いてマルチプレクサの入力に付番してもよい。
【０１１３】
本発明は、１態様においては、複数の主IO(108a-f)及び複数の冗長IO(108g-h)を含む１組のIO(108a-h)を有するメモリ(102)用の修復ソリューションを生成するための技術に特徴がある。例えば、メモリ(102)の入力／出力ポート(110a-f)とメモリIO(108a-h)のサブセットとの間のマッピングを選択するための技術が提供される。具体的には、IOのサブセットとメモリ入力／出力ポート(110a-f)との間に電気的接続を確立することにより、選択されたマッピングを実施するために複数のマルチプレクサ(112a-f)を構成するための技術が提供される。IOのサブセットは、欠陥のある１つ以上の主IO(108a-f)を有効に置き換える複数の冗長IO(108g-h)のうちの１つ以上を含むことができる。複数のマルチプレクサ(112a-f)は、欠陥のある任意の主IOのアイデンティティを符号化し、かつ、複数のマルチプレクサ(112a-f)への選択入力(132a-f,134a-f)として機能する１つ以上のサーモメータコード(116a-f,118a-f)を生成することによって構成することができる。
【図面の簡単な説明】
【０１１４】
【図１】本発明の１実施形態によるメモリ修復システムの概略図である。
【図２】本発明の１実施形態による内蔵型自己修復（ＢＩＳＲ）エンジンのブロック図である。
【図３】本発明の１実施形態による、複数の冗長ＩＯを有するキャッシュをテストし修復する方法のフローチャートである。
【図４Ａ】本発明の１実施形態による２つの線形フィードバックシフトレジスタの内部回路の概略図である。
【図４Ｂ】本発明の１実施形態による２つの線形フィードバックシフトレジスタの内部回路の概略図である。
【図５Ａ】本発明の１実施形態による冗長合法化セルの内部回路の概略図である。
【図５Ｂ】図５Ａの冗長合法化セルによって行われる、本発明の１実施形態による初期選択値を合法化する方法のフローチャートである。
【図６】本発明の１実施形態によるサーモメータコード生成ブロックの内部回路の概略図である。
【図７】本発明の１実施形態によるサーモメータコードを生成する方法のフローチャートである。
【図８】本発明の１実施形態によるサーモメータ制御ブロックの動作を示す有限状態マシン図である。
【符号の説明】
【０１１５】
１０２              メモリ（キャッシュ）
１０６ａ、１０６ｂ  サーモメータコード格納手段
１０８ａ〜１０８ｆ  主ＩＯ
１０８ｇ〜１０８ｈ  予備ＩＯ
１１０ａ〜１１０ｆ  入力／出力ポート
１１２ａ〜１１２ｆ  切り換え手段
２１０ａ、２１０ｂ  障害データ格納手段
【図１】
2004192792.tif 000004
【図２】
2004192792.tif 000005
【図３】
2004192792.tif 000006
【図４Ａ】
2004192792.tif 000007
【図４Ｂ】
2004192792.tif 000008
【図５Ａ】
2004192792.tif 000009
【図５Ｂ】
2004192792.tif 000010
【図６】
2004192792.tif 000011
【図７】
2004192792.tif 000012
【図８】
2004192792.tif 000013