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

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

▶ 日本テキサス・インスツルメンツ株式会社の特許一覧 ▶ テキサス インスツルメンツ インコーポレイテッドの特許一覧

特許7387725アドレス障害を検出するためのシステム、方法、及び装置
<>
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図1
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図2
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図3
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図4
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図5
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図6
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図7
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図8
  • 特許-アドレス障害を検出するためのシステム、方法、及び装置 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-17
(45)【発行日】2023-11-28
(54)【発明の名称】アドレス障害を検出するためのシステム、方法、及び装置
(51)【国際特許分類】
   G11C 29/02 20060101AFI20231120BHJP
   G06F 11/10 20060101ALI20231120BHJP
   G06F 11/07 20060101ALI20231120BHJP
   G06F 11/30 20060101ALI20231120BHJP
【FI】
G11C29/02 130
G11C29/02 110
G06F11/10 604
G06F11/07 166
G06F11/30 140N
G06F11/07 140N
【請求項の数】 27
(21)【出願番号】P 2021518728
(86)(22)【出願日】2019-10-04
(65)【公表番号】
(43)【公表日】2022-01-13
(86)【国際出願番号】 US2019054784
(87)【国際公開番号】W WO2020072952
(87)【国際公開日】2020-04-09
【審査請求日】2022-09-28
(31)【優先権主張番号】16/153,546
(32)【優先日】2018-10-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390020248
【氏名又は名称】日本テキサス・インスツルメンツ合同会社
(73)【特許権者】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【上記1名の代理人】
【識別番号】100098497
【弁理士】
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】デビッド ピーター フォレイ
【審査官】小林 紀和
(56)【参考文献】
【文献】米国特許出願公開第2012/0030531(US,A1)
【文献】特開平05-225797(JP,A)
【文献】特開2013-073653(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 29/02
G06F 11/10
G06F 11/07
G06F 11/30
G11C 29/42
G06F 12/06
(57)【特許請求の範囲】
【請求項1】
システムであって、
プロセッサであって、
データを記憶するための所望の位置に対応する第1のアドレス情報を生成するように構成されるアドレス生成器と、
前記第1のアドレス情報に基づいて第1のパリティを生成するように構成される第1のパリティ生成器と
パリティ検査器と、
を含む、前記プロセッサと、
メモリであって、
メモリストレージアレイと、
1組のワード線と1組のビット線とにより第1のノードで前記メモリストレージアレイに結合されるアドレスデコーダであって、前記第1のアドレス情報を受信し、前記第1のアドレス情報を受信することに応答して前記1組のワード線と前記1組のビット線とのサブセットを活性化するように構成される、前記アドレスデコーダと、
前記1組のワード線と前記1組のビット線とにより第2のノードで前記メモリストレージアレイに結合されるアドレスエンコーダであって、前記1組のワード線と前記1組のビット線とのサブセットを第2のアドレス情報にエンコードするように構成される、前記アドレスエンコーダと、
前記アドレスエンコーダに結合される第2のパリティ生成器であって、メモリストレージアレイに記憶される前記データ実際の位置を代表する前記第2のアドレス情報に基づいて第2のパリティを生成するように構成される、前記第2のパリティ生成器と
を含み、
前記パリティ検査器が前記第1のパリティ前記第2のパリティ比較する、システム。
【請求項2】
請求項1に記載のシステムであって、
前記第1のパリティが、前記第1のアドレス情報における第1の1組のビットから判定される第1のパリティビットを含み、前記第2のパリティが、前記第2のアドレス情報における第2の1組のビットから判定される第2のパリティビットを含む、システム。
【請求項3】
請求項1に記載のシステムであって、
前記アドレス生成と前記メモリストレージアレイの間に位置する障害を更に含む、システム。
【請求項4】
請求項3に記載のシステムであって、
前記第1のアドレス情報が前記プロセッサにおけるデータオペランドに対応する、システム。
【請求項5】
請求項4に記載のシステムであって、
前記プロセッサにおける前記データオペランドが前記アドレス生成に入力される、システム。
【請求項6】
請求項1に記載のシステムであって、
前記パリティ検査器が、前記第2のアドレス情報が前記第1のアドレス情報と一致するかどうかを判定し、
前記第2のアドレス情報が前記第1のアドレス情報と一致しないと判定することに応答して、前記データの記憶についての障害を判定する、システム。
【請求項7】
請求項1に記載のシステムであって、
前記システムが、少なくともデータパリティ、データ及びアドレスパリティ、データ誤り訂正コード(ECC、又は、データ及びアドレスECCと連携して用いられ得る、システム。
【請求項8】
請求項1に記載のシステムであって、
前記システムがアプリケーションのランタイムの間に用いられ得る、システム。
【請求項9】
請求項に記載のシステムであって、
前記システムが、アプリケーションの少なくとも起動又は停止の間前記障害を検出し得る、システム。
【請求項10】
方法であって、
プロセッサ内のアドレス生成器によって、メモリストレージアレイにデータを記憶するため所望の位置に対応する第1のアドレス情報に基づいて第1のパリティを生成すること
メモリ内のアドレスデコーダによって、前記第1のアドレス情報をデコードすることであって、前記アドレスデコーダが1組のワード線と1組のビット線とにより第1のノードで前記メモリストレージアレイに結合される、前記デコードすることと、
前記アドレスデコーダによって、前記第1のアドレス情報を受信することに応答して前記1組のワード線と前記1組のビット線とのサブセットを活性化することと、
前記メモリ内のアドレスエンコーダによって、前記1組のワード線と前記1組のビット線とのサブセットを第2のアドレス情報にエンコードすることであって、前記アドレスエンコーダが前記1組のワード線と前記1組のビット線とにより第2のノードで前記メモリストレージアレイに結合される、前記エンコードすることと、
前記メモリ内の第2のパリティ生成器によって、前記メモリストレージアレイに記憶されるデータ実際の位置を代表す前記第2のアドレス情報に基づいて第2のパリティを生成すること
パリティ検査器によって、前記第1のパリティを前記第2のパリティと比較すること
を含む、方法。
【請求項11】
請求項10に記載の方法であって、
前記第1のパリティが、前記第1のアドレス情報における第1の1組のビットから判定される第1のパリティビットを含み、前記第2のパリティが、前記第2のアドレス情報における第2の1組のビットから判定される第2のパリティビットを含む、方法。
【請求項12】
請求項10に記載の方法であって、
前記プロセッサによって、前記第1のパリティと前記第2のパリティとの間の比較に基づいて前記アドレス生成と前記メモリストレージアレイの間に位置する障害を判定すことを更に含む、方法。
【請求項13】
請求項10に記載の方法であって、
前記第1のアドレス情報がプロセッサにおけるデータオペランドに対応する、方法。
【請求項14】
請求項13に記載の方法であって、
前記1組のワード線前記1組のビット線とのサブセットを活性化することによって前記データ前記メモリストレージアレイ記憶される、方法。
【請求項15】
請求項10に記載の方法であって、
前記方法が、少なくともデータパリティ、データ及びアドレスパリティ、データ誤り訂正コード(ECC、又は、データ及びアドレスECCと連携して用いられ得る、方法。
【請求項16】
請求項10に記載の方法であって、
前記方法がアプリケーションのランタイムの間に用いられ得る、方法。
【請求項17】
請求項16に記載の方法であって、
前記方法が、前記アプリケーションの少なくとも起動又は停止の間障害を検出し得る、方法。
【請求項18】
命令を含む非一時的コンピュータ可読記憶媒体であって、
前記命令が、実行されると、プロセッサに少なくとも、
メモリストレージアレイにデータをストアするため所望の位置に対応する第1のアドレス情報に基づいて第1のパリティを生成すること
前記データの記憶の間に活性化され、前記メモリストレージアレイに記憶される前記データの実際の位置を代表する1組のワード線と1組のビット線とに対応する第2のアドレス情報に基づいて第2のパリティを生成すること
前記第1のパリティ前記第2のパリティを比較すること
を含み、
アドレスエンコーダが第2のノードで前記メモリストレージアレイに結合され、前記アドレスエンコーダが、前記メモリストレージアレイに記憶される前記データの実際の位置の1組のワード線と1組のビット線とを前記第2のアドレス情報にエンコードするように構成され、
前記メモリストレージアレイが第1のノードにおいてアドレスデコーダに結合され、前記アドレスデコーダが、前記第1のアドレス情報を受信してデコードするように構成され、
前記アドレスデコーダが、前記第1のアドレス情報を受信してデコードすることに応答して前記1組のワード線と前記1組のビット線とを活性化するように更に構成される、非一時的コンピュータ可読記憶媒体。
【請求項19】
請求項18に記載の非一時的コンピュータ可読記憶媒体であって、
前記第1のパリティが、前記第1のアドレス情報における第1の1組のビットから判定される第1のパリティビットを含み、前記第2のパリティが、前記第2のアドレス情報における第2の1組のビットから判定される第2のパリティビットを含む、非一時的コンピュータ可読記憶媒体。
【請求項20】
請求項18に記載の非一時的コンピュータ可読記憶媒体であって、
前記第1のパリティと前記第2のパリティとの間の比較に基づいて、アドレス生成ユニットと前記メモリストレージアレイとの間にある障害を検出することを更に含む、非一時的コンピュータ可読記憶媒体。
【請求項21】
請求項18に記載の非一時的コンピュータ可読記憶媒体であって、
前記第1のアドレス情報が前記プロセッサにおけるデータオペランドに対応する、非一時的コンピュータ可読記憶媒体。
【請求項22】
請求項20に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令が、前記プロセッサに、少なくともアプリケーションの起動又は停止の間前記障害を検出させる、非一時的コンピュータ可読記憶媒体。
【請求項23】
請求項22に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令が、前記プロセッサに、アプリケーションのランタイムの間に前記障害を検出させる、非一時的コンピュータ可読記憶媒体。
【請求項24】
請求項18に記載の非一時的コンピュータ可読記憶媒体であって、
前記命令が、前記プロセッサに、少なくともデータパリティ、データ及びアドレスパリティ、データ誤り訂正コード(ECC、又は、データ及びアドレスECCと連携して用いられるようにさせる、非一時的コンピュータ可読記憶媒体。
【請求項25】
装置であって、
メモリストレージアレイにデータを記憶するための所望の位置に対応する第1のアドレス情報に基づいて第1のパリティを生成するように構成される第1のパリティ発生器であって、前記第1のアドレス情報がプロセッサにおけるデータオペランドに基づく、前記第1のパリティ発生器と、
前記プロセッサにおけるパリティ検査器であって、
前記第1のパリティ発生器から前記第1のパリティを受け取り、
前記メモリストレージアレイにおける前記データの記憶の間に活性化され、前記メモリストレージアレイに記憶される前記データの実際の位置を代表する1組のワード線と1組のビット線とに対応する第2のアドレス情報に基づく第2のパリティを第2のパリティ発生器から受け取り、
前記第1のパリティを前記第2のパリティと比較する、
ように構成される、前記パリティ検査器と、
を含み、
前記1組のワード線と前記1組のビット線とが、アドレスデコーダを第1のノードで前記メモリストレージアレイに結合し、前記アドレスデコーダが前記第1のアドレス情報を受け取るように構成され、
前記1組のワード線と前記1組のビット線とが、前記メモリストレージアレイを第2のノードでアドレスエンコーダに結合し、前記アドレスエンコーダが前記第2のアドレス情報を出力するように構成され、
前記アドレスエンコーダが前記第2のパリティ発生器に結合される、装置。
【請求項26】
請求項25に記載の装置であって、
前記第1のパリティが、前記第1のアドレス情報における第1の1組のビットから判定される第1のパリティビットを含み、前記第2のパリティが、前記第2のアドレス情報における第2の1組のビットから判定される第2のパリティビットを含む、装置。
【請求項27】
請求項25に記載の装置であって、
前記パリティ検器が、前記第1のパリティと前記第2のパリティとの間の比較に基づいて、前記第1のアドレス情報を生成したアドレス生成ユニットと前記メモリストレージアレイとの間に位置する障害を検出するように構成される、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、概して、システム障害を処理することに関し、より詳細には、アドレス障害を検出するためのシステム、方法、及び装置に関する。
【背景技術】
【0002】
マイクロコントローラは、所望のプロセスを実施するためにマイクロコントローラが実行し得るコード化された命令セットとして記述され得る自動化プロセスに有用である。例えば、マイクロコントローラは、車両エンジン制御システム、バイオメディカルデバイス、リモートコントローラ、電気機器、電動工具などに用いられ得る。
【0003】
マイクロコントローラは、少なくとも一つの中央処理装置(CPU)、並びに、メモリ及びプログラマブル入出力デバイスを含み得る。メモリは、例えば、ランダムアクセスメモリ(RAM)、強誘電体ランダムアクセスメモリ(FRAM)、非排他的論理和(NOR)フラッシュ、ワンタイムプログラマブル読出し専用メモリ(OTP ROM)などとし得る。メモリはCPUに対して外置きとし得る。或いは、メモリ及びCPUが同一デバイス上に備わっていてもよい。
【0004】
プロセッサとメモリの間のデータの移送を制御することによって様々なプロセスを調節し得るため、マイクロコントローラは自動化システムの不可欠な部分である。
【発明の概要】
【0005】
本明細書に開示される或る例では、アドレス情報の初期生成と、このアドレス情報を特定のワード線イネーブル値及びビット線イネーブル値に復号することとの間に生じ得る障害に対する保護が強化される。例示のシステムは、第1のパリティジェネレータ、第2のパリティジェネレータ、及びパリティチェッカーを含む。第1のパリティジェネレータは、第1のアドレス情報に基づいて第1のパリティを生成するためのものである。第1のアドレス情報は、メモリストレージアレイにデータをストアするための所望の位置に対応する。第2のパリティジェネレータは、第2のアドレス情報に基づいて第2のパリティを生成する。第2のアドレス情報は、データがメモリストレージアレイにストアされる実際の位置に対応する。パリティチェッカーは、第1のパリティと第2のパリティを比較して障害を検出する。
【図面の簡単な説明】
【0006】
図1】例示の障害検出システムを図示するブロック図である。
【0007】
図2】例示のCPUパリティジェネレータを図示するブロック図である。
【0008】
図3】例示のメモリパリティジェネレータを図示するブロック図である。
【0009】
図4】例示のパリティチェッカーを図示するブロック図である。
【0010】
図5図1の障害検出システムを実装するために実行され得る機械可読命令を表すフローチャートである。
【0011】
図6図2のCPUパリティジェネレータを実装するために実行され得る機械可読命令を表すフローチャートである。
【0012】
図7図3のメモリパリティジェネレータを実装するために実行され得る機械可読命令を表すフローチャートである。
【0013】
図8図4のパリティチェッカーを実装するために実行され得る機械可読命令を表すフローチャートである。
【0014】
図9図5図6図7、及び図8の命令を実行するように構築される例示の処理プラットフォームのブロック図である。
【0015】
図は一定の縮尺で描かれていない。概して、同じ又は同様の部分を指すために、図面及び添付の説明を通して同じ参照番号が用いられる。図においては層及び領域を明瞭な線及び境界で示すが、これらの線及び/又は境界の一部又は全部が理想化されていることがある。実際には、境界及び/又は線は観察不可能であったり、混ざっていたり、及び/又は不規則であることがある。
【発明を実施するための形態】
【0016】
マイクロコントローラはプロセスの自動化において不可欠な役割を果たす。アプリケーションの成功のためにプロセスが冗長又はクリティカルなことがあるが、これに関わらず、マイクロコントローラの機能が適切であることが最も重要である。マイクロコントローラに生じる典型的な障害は、メモリストレージアレイや、メモリストレージアレイをサポートする周辺機器における電気的又は磁気的な干渉に起因し得る。これらの干渉は、メモリやロジックの一つ又は複数のビットの状態を変化させ、それによって障害が生じ得る。これらの障害に対する典型的な解決策は、誤り訂正符号(ECC)及びパリティロジック及び/又はソフトウェアである。これらの解決策は、データが正しいアドレスに書き込まれたという前提の下でうまく機能し、しばしば、書込み後に書き込まれたデータを読み返すことを伴う。しかし、CPUによって提示されるアドレス情報がECC及び/又はパリティロジック生成アルゴリズムに含まれているとしても、アドレス経路に恒久的な障害が存在する場合、検出スキームが障害を感知し得、大幅な遅延なしに障害修正手順を採用するようにプロセッサに警告し得るという保証はない。ECC及びパリティロジック及び/又はソフトウェアは、例えば、データパリティ、データ及びアドレスパリティ、データECC、又はデータ及びアドレスECCとし得る。
【0017】
恒久アドレス障害を検出する従来の方法は、起動時にメモリをテストしてアドレス位置が正しいことを確認することを含む。しかし、この方法は、前回の起動手順以降に発生した障害しか検出し得ない。さらに、起動手順は頻繁には実行されないことがあるため、恒久障害が長期間にわたって検出されないままとなり得る。
【0018】
例えば、CPUは第1のアドレスに何らかのデータを書き込もうと試み得るが、アドレス経路又はロジックに障害が存在する。この障害によりデータは代わりに第2のアドレスに書き込まれる。この障害が一過性障害の場合、上述の従来の書込み後読出し方法は、第1のアドレスにおいてストアされたデータを読み出し得、第1のアドレスにおけるストアデータが、書込み処理で送信されたデータと同一のデータではないことを認識し得る。しかし、障害がCPUとECC及びパリティロジック及び/又はソフトウェアとの間で生じる恒久障害である場合、従来の方法は、第1のアドレスにおいてストアされたデータを読み出していると認識するが、実際には第2のアドレスにおいてストアされたデータを読み出している。CPUとECC及びパリティロジック及び/又はソフトウェアとの間で恒久障害が生じる場合、第2のアドレスのデータは第1のアドレスのために意図されたデータで上書きされる。CPUは、第2のアドレスにおけるデータが上書きされたと判定できず、それによってアプリケーションが安全ではない状態となり得る。
【0019】
恒久障害の別のケースは、障害がECC及び/又はパリティロジック及び/又はソフトウェアとメモリとの間で生じる場合である。この場合、従来の方法は、第1のアドレスのためのデータが、第2のアドレスにストアされたにもかかわらず、第1のアドレスにストアされたと認識してしまう。第2のアドレスがCPUによって読まれるとき、CPUは第2のアドレスにストアされているデータがそのアドレスの正しいデータではないことに気づく。このタイプの恒久障害は、従来の方法によっても最終的には捉えられるが、検出が遅れ、アプリケーションが危険な状態に晒されたままになる。
【0020】
CPUとデータがストアされるメモリセルとの間で生じる恒久障害に対処するため、プロセッサで用いられるアドレス情報と、メモリへのデータストアに関するアドレス情報から、少なくとも二つのパリティを生成するために、パリティジェネレータがメモリだけでなくプロセッサに含まれ得る。プロセッサは、次いで、パリティチェッカーを用いて二つ又はそれ以上のパリティ値を比較し、アドレス情報生成とメモリへのデータストアに関するアドレス情報との間に恒久障害が発生しているかどうかを判定し得る。この提案された方法は、プロセッサにおいて生成されるアドレス情報に対して第1のパリティを生成し、そのパリティを、メモリにデータをストアするために用いられるアドレス情報から生成される第2のパリティと比較し、ECC及びパリティロジック及び/又はソフトウェアの従来の方法と連携して用いられ得る。
【0021】
図1は、例示のメモリストレージアレイ124の障害検出を行なうために、本開示の教示に従って実装され得る例示の障害検出システム100のブロック図である。障害検出システム100は、例示のプロセッサ102及び例示のメモリ104を含み得る。図示の例において、プロセッサ102は例示の中央処理装置(CPU)であり、メモリ104は例えばRAMである。代わりに、メモリ104は、任意の他のタイプの揮発性又は不揮発性メモリ或いは論理レジスタとし得る。
【0022】
図1の図示の例において、CPU102は例示のアドレス生成ユニット106を含み得る。
【0023】
アドレス生成ユニット106は、例示の書込みアドレスバス108に結合される。書込みアドレスバス108は、メモリ104にデータを書き込むために、アドレス情報として知られる所望の位置を識別する情報を伝える。データは、例示の書込みデータバス110によってメモリ104に書き込まれる。書込みアドレスバス108は、例示のCPUパリティジェネレータ112にも結合される。CPUパリティジェネレータ112は、CPUパリティジェネレータ出力114によって例示のパリティチェッカー116に結合される。パリティチェッカー116は、次いで、パリティチェッカー116の外部にあるCPU102の一部に結合される。CPU102は、例示のECC及びパリティバス136によってメモリ104に結合されるECC及び/又はパリティロジック及び/又はソフトウェア134も含む。ここで列記した異なる構成要素間の結合は、アプリケーションに応じて有線であっても無線であってもよい。
【0024】
図1の図示の例において、CPU102は、アドレス生成ユニット106を含む。幾つかの例において、アドレス生成ユニット106は、CPUにおけるデータオペランドをアドレス指定するために必要な計算を実施し、アドレスを生成するように機能する。アドレス生成ユニット106は、4セットの3連レジスタ、並びに全加算器、オフセット加算器、及びモジュロ加算器を含む。3連レジスタはそれぞれ、アドレスレジスタ、オフセットレジスタ、及び指標レジスタを含む。加算器はレジスタと連携して機能して、レジスタにストアされている情報に対して演算を実行してアドレス情報を生成する。アドレス生成ユニット106は、例えば、ハッシュ値、バイナリ値、16進値などを含む様々なデータタイプとして情報を表し得る。
【0025】
図示の例において、CPU102は、或る入力データタイプから少なくとも一つのパリティビットを判定するCPUパリティジェネレータ112を含む。下記で説明するように、パリティビットは、パリティビットの生成元のデータにおける単一ビットエラーをチェックするために用いられる。CPU102は、二つの異なるパリティジェネレータからの少なくとも二つのパリティビットを比較するパリティチェッカー116も含む。パリティビットを比較した後、パリティチェッカー116は、CPU102の異なる部分と通信し、パリティチェックの結果を通信するためのものである。
【0026】
図1の図示の例において、書込みアドレスバス108及び書込みデータバス110は様々な方式で実装され得る。書込みアドレスバス108及び書込みデータバス110は、アドレス情報及びデータをメモリストレージアレイ124における所望の位置に送信する。アドレスバス及びデータバスの例示の実装には、例えば、バス上の各データ又はアドレス情報値に対して1本のワイヤを用いること、配線構成の複雑さを軽減する方法としてマルチプレクサを用いることなどが含まれ得る。
【0027】
図示の例において、メモリ104は、アドレスデコーダ118、メモリストレージアレイ124、アドレスエンコーダ126、及びメモリパリティジェネレータ128を含む。アドレスデコーダ118は、書込みアドレスバス108に結合され、ワード線120及びビット線122によってメモリストレージアレイ124に結合される。メモリストレージアレイ124は、ワード線120及びビット線122によってアドレスエンコーダ126に結合される。アドレスエンコーダ126は、メモリパリティジェネレータ128にも結合される。メモリパリティジェネレータ128は、CPU102におけるパリティチェッカー116に結合される。
【0028】
アドレスデコーダ118は、アドレス情報のデータタイプをメモリストレージアレイ124のために必要とされる入力データタイプに変換するためのハードウェア又はソフトウェア要素を含み得る。この変換は、物理論理ゲートの使用又はソフトウェアでのブール代数の使用を介して成され得る。ハードウェア実装として、アドレスデコーダ118は、書込みアドレスバス108上の信号を、ワード線120及びビット線122に通電するために用いられる一層多くの信号に変換する、幾つかのデマルチプレクサを含み得る。
【0029】
通電されたワード線120及びビット線122は、書込みデータバス110に関する情報をストアするために、メモリストレージアレイ124における実際の位置を特定するために用いられる一セットのワード線イネーブル値のセット及び一セットのビット線イネーブル値を作成する。
【0030】
図1の図示の例において、メモリストレージアレイ124は、メモリ104において用いられるプログラマブルロジックアレイ、フィールドプログラマブルゲートアレイなどとし得る。メモリ104は、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、ハードドライブなどとして実装され得る。図示の例において、ワード線120及びビット線122は、データをストアするために、メモリストレージアレイ124における特定のアドレス情報を選択する行-列ペアのための指示子として用いられる。メモリストレージアレイ124は、DRAMである例示のメモリ104において用いられ得る。例示のメモリストレージアレイ124がDRAMである場合、メモリストレージアレイ124は、幾つかのスイッチ及びコンデンサを含み得る。スイッチは、例えば、金属酸化物半導体電界効果トランジスタ(MOSFET)、バイポーラ接合トランジスタ(BJT)、接合ゲート電界効果トランジスタ(JFET)、ヘテロ接合バイポーラトランジスタ(HBT)などのトランジスタとし得る。トランジスタ及びコンデンサを共に用いることにより、1ビットのデータに対応するメモリセルが形成される。ワード線120及びビット線122は、データをストアする個々のメモリセルの位置を特定するために用いられる。例示のメモリストレージアレイ124におけるコンデンサは、これらにストアされるデータを劣化させることになる漏れが時間の経過とともに生じ得、読出し事象後のストアデータを維持するために再充電を必要とし得る。これは、ワード線120及びビット線122を再通電して、メモリストレージアレイ124におけるコンデンサを再充電することによって行われる。この繰返し再通電により、ワード線120及びビット線122に歪みが生じ得、最終的に、ワード線120及び/又はビット線122に障害が生じ得る。
【0031】
図1の図示の例において、メモリ104は、それぞれ、ワード線120及びビット線122上の情報を符号化するアドレスエンコーダ126を含む。イネーブルされるワード線120及びビット線122の特定のセットは、ワード線イネーブル値及びビット線イネーブル値になり、これらの値はアドレスエンコーダ126によってアドレス情報に符号化される。例えば、ワード線120及びビット線122上のワード線イネーブル値及びビット線イネーブル値は、アドレスチェックバス130上のメモリパリティジェネレータ128に送られるアドレス情報のサイズを小さくするためにマルチプレクサに入力される(例えば、値が入力される)。再符号化されたアドレス情報がメモリパリティジェネレータ128に送られた後、メモリパリティジェネレータ128の出力は、パリティチェッカー116に送信される。メモリパリティジェネレータ128はパリティチェッカー116に結合され、そのため、メモリパリティジェネレータ128からの出力は、CPU102におけるCPUパリティジェネレータ112から生成されるパリティと比較され得る。言い換えれば、障害がなければ、アドレスエンコーダ126からの出力は、アドレス生成ユニット106からの出力と一致する。CPUパリティジェネレータ112によるCPU102におけるパリティの生成、メモリパリティジェネレータ128によるメモリ104におけるパリティの生成、及びパリティチェッカー116によるこれら二つのパリティの比較により、CPU102とデータがストアされる位置との間で生じる障害が適切に検出され得る。
【0032】
図1の図示の例において、障害検出システム100は、アドレス線上の障害を能動的に検出する。メモリ104にデータをストアするための所望のアドレス情報は、初期的に、アドレス生成ユニット106によって計算される。このアドレス情報は、書込みデータバス110上のデータをストアするための所望の位置に対応する。アドレス情報は、次いで、書込みアドレスバス108に送られ、メモリ104及びCPUパリティジェネレータ112に送られる。CPUパリティジェネレータ112は、書込みアドレスバス108上の符号化されたアドレス情報から一つ又は複数のパリティビットを生成する。一つ又は複数のパリティビットはパリティチェッカー116に送られる。
【0033】
メモリ104において、アドレスデコーダ118は、書込みアドレスバス108からアドレス情報を受け取る。アドレスデコーダ118は、ハードウェア又はソフトウェアを用いてアドレス情報を復号する。復号されたアドレス情報により、ワード線120及びビット線122上のワード線イネーブル値及びビット線イネーブル値が生成され、これらの値によって書込みデータバス110上のデータのストアに関する実際のアドレス情報が判定される。ワード線イネーブル値及びビット線イネーブル値は、次いで、アドレスエンコーダ126によってハードウェア又はソフトウェアを用いて符号化される。このアドレス情報は、アドレスチェックバス130上のメモリパリティジェネレータ128に送られる。メモリパリティジェネレータ128は、受信したアドレス情報から一つ又は複数のパリティビットを生成する。
【0034】
一つ又は複数のパリティビットは、メモリパリティジェネレータ出力132を介してCPU102におけるパリティチェッカー116に送られる。メモリパリティジェネレータ128によって生成された一つ又は複数のパリティビットは、CPUパリティジェネレータ112によって生成される一つ又は複数のパリティビットと比較される。比較結果は、次いで、パリティチェッカー116の外部にあるCPU102の一部に送られる。パリティチェッカー116における比較の結果は、デジタル高値又はデジタル低値となり得る。例えば、比較結果がデジタル高値であり、デジタル高値がブール真値に対応するようにCPU102が設計されている場合、障害が生じたことがCPU102に通知される。或いは、デジタル高値がブール偽値に対応するようにCPU102が設計されている場合、障害が生じなかったことがCPU102に通知される。障害が生じなかった場合、CPU102は障害のチェックを継続する。ただし、障害が生じた場合、CPU102は、アプリケーションに対するエラーの影響を軽減するためのソフトウェアを実行し得る。
【0035】
図2は、図1の例示のCPUパリティジェネレータ112のブロック図である。CPUパリティジェネレータ112は、例示のインターフェース202及び例示の論理判定器204を含む。この例において、インターフェース202は、書込みアドレスバス108及び論理判定器204に結合される。論理判定器204は、CPUパリティジェネレータ出力114によってパリティチェッカー116に結合され得る。ここで列記した異なる構成要素間の結合は、アプリケーションに応じて有線であっても無線であってもよい。
【0036】
図2の図示の例において、インターフェース202は、書込みアドレスバス108とCPUパリティジェネレータ112の間の接続としてハードウェアで実装され得る。インターフェース202は、書込みアドレスバス108上のアドレス情報を8ビットの情報区分に分離し得る。或いは、インターフェース202は、同じ機能を行なうソフトウェアとして実装され得る。インターフェース202は、二進、十六進、八進などを含む様々なデータタイプに接続され得る。インターフェース202は、これらのデータタイプの一つを、論理判定器204が入力として取り得るいかなるデータタイプにも変換し得る。
【0037】
図示の例において、論理判定器204は、一セットの個々の排他的論理和(XOR)ゲートとして、又は、入力値を少なくとも一つのパリティビットに低減するソフトウェアブール方程式として、或いは入力データを一セットのパリティビットに低減する別のタイプのソフトウェアとして実装され得る。XORゲートとともに実装される場合、論理判定器204は、8ビットの複数の群を共にハッシュして、各群に対し単一のパリティビットを形成し得る。
【0038】
図3は、図1の例示のメモリパリティジェネレータ128のブロック図である。メモリパリティジェネレータ128は、例示のインターフェース302及び例示の論理判定器304を含み得る。インターフェース302は、アドレスチェックバス130に結合され得る。論理判定器304はさらに、メモリパリティジェネレータ出力132によってパリティチェッカー116に結合される。ここで列記した異なる構成要素間の結合は、アプリケーションに応じて有線であっても無線であってもよい。
【0039】
図3の図示の例において、インターフェース302は、書込みアドレスバス130とメモリパリティジェネレータ128との間の接続としてハードウェアで実装され得る。インターフェース302は、書込みアドレスバス130上のアドレス情報を8ビットの情報区分に分離し得る。或いは、インターフェース302は、同じ機能を実行するソフトウェアとして実装され得る。インターフェース302は、二進、十六進、八進などを含む様々なデータタイプに接続され得る。インターフェース302は、論理判定器304が入力として取り得るこういったデータタイプの任意の一つに変換し得る。
【0040】
図示の例において、論理判定器304は、一セットの個々の排他的論理和(XOR)ゲートとして、又は入力値を少なくとも一つのパリティビットに低減するソフトウェアブール方程式として、或いは入力データを一セットのパリティビットに低減する別のタイプのソフトウェアとして実装され得る。XORゲートとともに実装される場合、論理判定器304は、8ビットの複数の群を共にハッシュして、各群に対して単一のパリティビットを形成し得る。
【0041】
図4は、図1の例示のパリティチェッカー116のブロック図である。パリティチェッカー116は、例示のインターフェース402、例示のコンパレータ404、及び例示の障害ジェネレータ406を含む。インターフェース402は、例えば、パリティチェッカー116、CPUパリティジェネレータ出力114、メモリパリティジェネレータ出力132などの外部にあるCPU102の一部に結合される。ここで列記した異なる構成要素間の結合は、アプリケーションに応じて有線であっても無線であってもよい。
【0042】
図4の図示の例において、インターフェース402は、CPUパリティジェネレータ出力114、メモリパリティジェネレータ出力132、パリティチェッカー116の外部にあるCPU102の一部、及びコンパレータ404に結合される。インターフェース402は、CPUパリティジェネレータ出力114及びメモリパリティジェネレータ出力132を入力とみなし、これら二つのパリティジェネレータに対応するパリティ値をコンパレータ404に送るためのものである。他の実装において、インターフェース402は、CPUパリティジェネレータ112及びメモリパリティジェネレータ128から、アドレス情報及びパリティビットを受け取り得る。上述の実装において、インターフェース402は、CPUパリティジェネレータ112から受け取った入力及びメモリパリティジェネレータ128から受け取った入力について、アドレス情報からパリティビットを分離し得る。ここで列記した異なる構成要素間の結合は、アプリケーションに応じて有線であっても無線であってもよい。
【0043】
図4の図示の例において、コンパレータ404は、インターフェース402及び障害ジェネレータ406に結合される。コンパレータ404は、ハードウェア及び/又はソフトウェアとして実装され得る。ハードウェア実装において、二つ又はそれ以上のパリティビットを比較し、結果を生成し、その情報を障害ジェネレータ406に送るために、XOR論理ゲートを用い得る。コンパレータ404のソフトウェア実装において、少なくとも二つのパリティビットを共に比較し、次いでその結果を障害ジェネレータ406に送るため、1セットのブール代数方程式を用い得る。ここで列記した異なる構成要素間の結合は、アプリケーションに応じて有線であっても無線であってもよい。
【0044】
図示の例において、障害ジェネレータ406は、コンパレータ404及びインターフェース402に結合される。障害ジェネレータ406は、ハードウェア又はソフトウェアとして実装され得る。ハードウェア実装として、障害ジェネレータ406は、インターフェース402に送られる高レベル又は低レベルの信号を生成する1セットの論理ゲートとし得る。ソフトウェアで実装される場合、障害ジェネレータ406は、コンパレータ404の出力の対象となるelse/if文とし得る。障害ジェネレータ406からの出力は、インターフェース402がパリティチェッカー116の外部にあるCPU102の一部と通信し得るように、インターフェース402に送られる。ここで列記した異なる構成要素間の結合は、アプリケーションに応じて有線であっても無線であってもよい。
【0045】
CPUパリティジェネレータ112、メモリパリティジェネレータ128、及びパリティチェッカー116は、アプリケーションのランタイムの間の障害検出を可能にしながら(例えば、ランタイムの間に用いられる)、ワード線及びビット線障害に対する適用範囲を最大にし得るが、以前の解決策は、以前の解決策が破壊的な性質を持つため、アプリケーションの起動時又は停止時にのみ実装され得る。以前の解決策が破壊性を有するのは、以前の解決策が完全なテストを中断することなく行なうためには、メモリを機能的に使用できないようにしなければならないからである。これにより、テスト中のメモリはかなりの時間の間利用可能とならず、システム性能に大きな影響を及ぼす。逆に、CPUパリティジェネレータ112、メモリパリティジェネレータ128、及びパリティチェッカー116を用いると、メモリ104は、障害を監視しながら完全に機能し、システム性能は前の解決策のように損なわれることがない。CPUパリティジェネレータ112、メモリパリティジェネレータ128、及びパリティチェッカー116は、アドレス情報のための適応型オンザフライフィードバックをCPU102に提供する。CPUパリティジェネレータ112、メモリパリティジェネレータ128、及びパリティチェッカー116は、CPU102におけるアドレス情報生成と、処理システムのメモリ104におけるアドレス情報使用との間のループを閉じることによって、コンピューティングデバイス使用の効率を改善する。これにより、CPU102におけるアドレス情報の初期生成と、そのアドレス情報をメモリ104における特定のワード線イネーブル値及びビット線イネーブル値に復号することとの間に起こり得る障害に対する保護が強化され得る。
【0046】
図1の障害検出システム100を実装する例示の手法を図2図3、及び図4に示すが、図2図3、及び図4に図示する要素、プロセス、及び/又はデバイスの一つ又は複数が、任意の他の方式において、組み合わされ、分割され、再配置され、省略され、削除され、及び/又は実装され得る。また、例示のCPUパリティジェネレータ112、例示のメモリパリティジェネレータ128、例示のパリティチェッカー116、及び/又は、より一般的には、図1の例示の障害検出システム100は、ハードウェア、ソフトウェア、ファームウェア、及び/又は、ハードウェア、ソフトウェア、及び/又はファームウェアの任意の組み合わせによって実装され得る。そのため、例えば、例示のCPUパリティジェネレータ112、例示のメモリパリティジェネレータ128、例示のパリティチェッカー116、及び/又は、より一般的には、例示の障害検出システム100のうちの任意のものが、一つ又は複数の、アナログ又はデジタル回路、論理回路、プログラマブルプロセッサ、プログラマブルコントローラ、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、及び/又はフィールドプログラマブル論理デバイス(FPLD)によって実装され得る。純粋にソフトウェア及び/又はファームウェアの実装をカバーするために本特許の装置又はシステム請求項の任意のものを読むにあたって、例示のCPUパリティジェネレータ112、例示のメモリパリティジェネレータ128、例示のパリティチェッカー116、及び/又は例示の障害検出システム100の少なくとも一つを、ソフトウェア及び/又はファームウェアを含め、非一時的コンピュータ可読ストレージデバイス、又は、例えば、メモリ、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、Blu-rayディスクなどのストレージディスクを含むようにここに明示的に定義する。また、図1の例示の障害検出システム100は、図2図3、及び図4に示されるものに加えて、又はそれらの代わりに、一つ又は複数の要素、プロセス、及び/又はデバイスを含み得、及び/又は、図示される要素、プロセス、及びデバイスのいずれか二つ以上又は全てを含み得る。本明細書で用いられる場合、「通信し」という句及びその変形は、直接的な通信、及び/又は、一つ又は複数の介在構成要素を介する間接通信を包含し、直接の物理的(例えば、有線)通信及び/又は常時通信を必要とせず、むしろ、周期的間隔、スケジュールされた間隔、非周期的間隔、及び/又は一回限りの事象における選択的通信を付加的に含む。
【0047】
図5に、図1の障害検出システムを実装するための、例示のハードウェア論理、機械可読命令、ハードウェア実装状態機械、及び/又はこれらの任意の組み合わせを表すフローチャートを示す。機械可読命令は、図9に関連して以下で説明する例示のプロセッサプラットフォーム900に示すプロセッサ912などのコンピュータプロセッサによって実行される実行可能プログラム又は実行可能プログラムの一部とし得る。こういったプログラムは、CD-ROM、フロッピーディスク、ハードドライブ、DVD、Blu-rayディスク、又はプロセッサ912に関連するメモリなどの非一時的コンピュータ可読ストア媒体にストアされるソフトウェアにおいて具現化され得るが、プログラム全体及び/又はその一部が、代替としてプロセッサ912以外のデバイスによって実行され得、及び/又は、ファームウェア又は専用ハードウェアによって具現化され得る。また、例示のプログラムは、図5に図示するフローチャートを参照して説明するが、例示の障害検出システム100を実装する多くの他の方法が代わりに用いられ得る。例えば、これらのブロックの実行順序は変更され得、及び/又は、説明されるブロックの幾つかが、変更、削除、又は組み合わされ得る。これに加えて及び/又はこの代わりに、これらのブロックのいずれか又は全部が、一つ又は複数のハードウェア回路(例えば、離散及び/又は統合アナログ及び/又はデジタル回路要素、FPGA、ASIC、コンパレータ、オペアンプ、論理回路など)によって実装され得、これらのハードウェア回路は、ソフトウェア又はファームウェアを実行せずに、対応する動作を行うように構成される。
【0048】
上述したように、図1図2図3、及び図4の例示のプロセスは、例えば、ハードディスクドライブ、フラッシュメモリ、読出し専用メモリ、コンパクトディスク、デジタル多用途ディスク、キャッシュ、ランダムアクセスメモリ、及び/又は、情報が任意の期間(例えば、長期間にわたって、恒久的に、短いインスタンスの間、一時的にバッファリングする間、及び/又は情報をキャッシュする間)ストアされるストレージディスクなどの、非一時的コンピュータ及び/又は機械可読媒体にストアされる実行可能命令(例えば、コンピュータ及び/又は機械可読命令)を用いて実装され得る。本明細書で用いられる場合、非一時的コンピュータ可読媒体という用語は、任意のタイプのコンピュータ可読ストレージデバイス及び/又はストレージディスクを含み、伝搬信号を除外し、伝送媒体を除外するように明示的に定義される。
【0049】
「含む」及び「包含する」(及びこれらのすべての形態及び時制)は、本明細書において非限定用語として用いられる。したがって、或る請求項が、プリアンブルとして、又は任意の種類の請求項の記載内で、「含む」又は「包含する」の任意の形態(例えば、含む、包含する、含めて、有してなど)を採用する場合は常に、付加的な要素、用語などが、対応する請求項又は記載の範囲外となることなく存在し得ることを理解されたい。本明細書において、「少なくとも」という句が、例えば請求項のプリアンブルにおいて、移行項として用いられる場合、「包含する」及び「含む」という用語が限定されないのと同様に、「少なくとも」という句も限定されない。本明細書において、「少なくとも」という句が、例えば請求項のプリアンブルにおいて移行項として用いられる場合、「包含する」及び「含む」という用語が限定されないのと同様に、「少なくとも」という句は限定されない。用語「及び/又は」は、例えば、A、B、及び/又はCなどの形態で用いられる場合、A、B、Cの下記の任意の組み合わせ又はサブセットを指す。例えば、(1)Aのみ、(2)Bのみ、(3)Cのみ、(4)Bを備えるA、(5)Cを備えるA、(6)Cを備えるB、並びに、(7)B及びCを備えるAなどを指す。本明細書において、構造、構成要素、品目、対象物、及び/又は物を記述する文脈で用いられる場合、「A及びBの少なくとも一つ」という句は、(1)少なくとも一つのA、(2)少なくとも一つのB、並びに(3)少なくとも一つのA及び少なくとも一つのB、のうちの任意のものを含む実装を指すことを意図している。同様に、本明細書において、構造、構成要素、品目、対象物、及び/又は物を記述する文脈で用いられる場合、「A又はBの少なくとも一つ」という句は、(1)少なくとも一つのA、(2)少なくとも一つのB、並びに、(3)少なくとも一つのA及び少なくとも一つのB、のうちの任意のものを含む実装を指すことを意図している。本明細書において、プロセス、命令、動作、行為、及び/又は工程の実施又は実行を記述する文脈で用いられる場合、「A及びBの少なくとも一つ」という句は、(1)少なくともA、(2)少なくともB、並びに、(3)少なくともA及び少なくともB、のうちの任意のものを含む実装を指すことを意図している。同様に、本明細書において、プロセス、命令、動作、行為、及び/又は工程の実施又は実行を記述する文脈で用いられる場合、「A又はBの少なくとも一つ」という句は、(1)少なくともA、(2)少なくともB、並びに、(3)少なくともA及び少なくともB、のうちの任意のものを含む実装を指すことを意図している。
【0050】
図5のプログラムは、図1の障害検出システム100を実施するためのプロセス500を示す。プロセス500は、プロセス500の開始であるブロック502を含む。ブロック502は、第1のパリティを生成するようにプロセッサに指示し得るブロックである。プロセス500は、図2の例示のCPUパリティジェネレータ112に対応し得る。ブロック502において、CPUパリティジェネレータ112は、第1のアドレス情報に関連付けられる第1のパリティビットを生成する。第1のアドレス情報は、図1のCPU102におけるデータオペランドに関連付けられる(例えば、データオペランドに基づく)。第1のアドレス情報は、書込みアドレスバス108によってメモリ104に送られる。第1のアドレス情報は、書込みデータバス110上のデータがメモリ104にストアされる所望の位置とし得る。
【0051】
プロセス500は、第1のアドレス情報をワード線イネーブル値及びビット線イネーブル値に復号するようにプロセッサに指示するブロックであるブロック504を含む。これらのワード線イネーブル値及びビット線イネーブル値は、図1のメモリ104のワード線120及びビット線122に対応する。ブロック504は、図1の例示のハードウェア実装に対応し得、ブロック504は、アドレスデコーダ118としてハードウェアで実施され得る。
【0052】
プロセス500はブロック506を含む。ブロック506は、メモリストレージアレイにデータをストアするようにプロセッサに指示するブロックである。メモリストレージアレイは、図1のメモリストレージアレイ124に対応し得、データは、図1の書込みデータバス110上のデータに対応し得る。
【0053】
プロセス500はブロック508をさらに含む。ブロック508は、ワード線イネーブル値及びビット線イネーブル値を第2のアドレス情報に再符号化するようにプロセッサに指示するブロックである。この第2のアドレス情報は、ワード線120及びビット線122上のワード線イネーブル値及びビット線イネーブル値に対応する。この第2のアドレス情報は、データがメモリストレージアレイにストアされる実際の位置である。ブロック508は、図1の例示のハードウェア実装に対応し得、ブロック508は、例示のアドレスエンコーダ126として実装される。データがストアされるメモリストレージアレイは、図1のメモリストレージアレイ124に対応し得る。
【0054】
プロセス500は、第2のアドレス情報に基づいて第2のパリティビットを生成するようにプロセッサに指示するブロックであるブロック510を含む。このパリティビットは、ワード線120及びビット線122上のワード線イネーブル値及びビット線イネーブル値に対応する。ブロック510は、図1の例示のメモリ104の例示のメモリパリティジェネレータ128に対応し得る。
【0055】
プロセス500は、第1のアドレス情報に対応する第1のパリティビットと第2のアドレス情報に対応する第2のパリティビットとを比較するようにプロセッサに指示するブロックであるブロック512も含む。ブロック512は、図1の例示のパリティチェッカー116に対応し得る。
【0056】
図6のプロセスは、図5に示すプロセス500のブロック502を実装するために用いられ得るサブプロセス600を示す。サブプロセス600は、図1の例示のハードウェア実装において、図2に詳細に示すCPUパリティジェネレータ112によって示される。サブプロセス600は、CPU102における第1のアドレス情報に基づいてパリティビットを生成するようにプロセッサに指示するためのものである。第1のアドレス情報は、図1に示すアドレス生成ユニット106によって用いられるCPU102におけるデータオペランドに対応する。
【0057】
サブプロセス600は、データがメモリストレージアレイにストアされる前に、書込みアドレスバスから第1のアドレス情報が受け取られることを特定するブロック602で始まる。メモリストレージアレイは、図1の例示の障害検出システム100のメモリ104におけるメモリストレージアレイ124に対応し得る。第1のアドレス情報は、書込みアドレスバス108上にあるとし得る。ブロック602は、図2に示す例示のCPUパリティジェネレータ112のインターフェース202によって実施され得る。
【0058】
サブプロセス600における次のブロックはブロック604であり、ブロック604は、アドレス情報を図2の論理判定器204に送るように例示のCPUパリティジェネレータ112のインターフェース202に指示するブロックである。ブロック604は、図2のインターフェース202と論理判定器204の間の結合を表し得る。
【0059】
サブプロセス600における次のブロックはブロック606であり、ブロック606は、このブロックに送られるアドレス情報のための一つ又は複数のパリティビットを判定するブロックである。ブロック606は、図2のCPUパリティジェネレータ112における論理判定器204としてハードウェアで実施され得る。判定されるパリティビットの数は、アドレス情報のサイズに基づく。パリティビットは、典型的には、8ビットの情報のセットごとに判定される。例えば、CPUパリティジェネレータ112に入力されるデータは、論理判定器204によって用いられるようにするために、インターフェース202によって8ビットセグメントに分離される。32ビットアドレス情報の場合、論理判定器204は四つのパリティビットを判定する。
【0060】
サブプロセス600における次のブロックは、判定されたパリティビットをパリティチェッカーに送るブロックであるブロック608である。パリティチェッカーは、図1のCPU102のパリティチェッカー116に対応し得る。ブロック608は、ハードウェアにおいてCPUパリティジェネレータ出力114として表され得る。サブプロセス600における次のブロックはブロック610であり、ブロック610は、図5のプロセス500に戻るようにサブプロセス600に指示するブロックである。
【0061】
図7のプロセスは、図5に示すプロセス500のブロック510を実装するために用いられ得るサブプロセス700を示す。サブプロセス700は、図1の例示のハードウェア実装において、図3に詳細に示すメモリパリティジェネレータ128によって示される。サブプロセス700は、メモリ104における第2のアドレス情報に基づいてパリティビットを生成するようにプロセッサに指示し得る。第2のアドレス情報は、図1に示すメモリ104におけるワード線120及びビット線122に対応するワード線イネーブル値及びビット線イネーブル値に対応する。
【0062】
サブプロセス700は、データがメモリストレージアレイにストアされた後で、第2のアドレス情報がアドレスチェックバス上で受けられることを特定するブロック702で始まる。アドレスチェックバスは、図1のアドレスチェックバス130に対応し得る。メモリストレージアレイは、図1のメモリ104のメモリストレージアレイ124に対応し得る。ブロック702は、図3に示す例示のメモリパリティジェネレータ128のインターフェース302によって実施され得る。
【0063】
サブプロセス700における次のブロックはブロック704であり、ブロック704は、アドレス情報を図3の論理判定器304に送るように例示のメモリパリティジェネレータ128のインターフェース302に指示するブロックである。ブロック704は、図3のインターフェース302と論理判定器304の間の結合を表し得る。
【0064】
サブプロセス700における次のブロックはブロック706であり、ブロック706は、ブロック706に送られるアドレス情報のための一つ又は複数のパリティビットを判定するブロックである。ブロック706は、ハードウェアにおいて図3のメモリパリティジェネレータ128における論理判定器304として実施され得る。判定されるパリティビットの数は、アドレス情報のサイズに基づく。パリティビットは、典型的には、8ビットの情報のセットごとに判定される。例えば、メモリパリティジェネレータ128に入力されるデータは、論理判定器304によって用いられるようにするために、インターフェース302によって8ビットセグメントに分離される。32ビットアドレス情報の場合、論理判定器304は四つのパリティビットを判定する。
【0065】
サブプロセス700における次のブロックは、判定されたパリティビットをパリティチェッカーに送るブロックであるブロック708である。パリティチェッカーは、図1のCPU102のパリティチェッカー116に対応し得る。ブロック708は、ハードウェアにおいてメモリパリティジェネレータ出力132として表され得る。サブプロセス700における次のブロックはブロック710であり、ブロック710は、図5のプロセス500に戻るようにサブプロセス700に指示するブロックである。
【0066】
図8のプロセスは、図5に示すプロセス500のブロック512を実装するために用いられ得るサブプロセス800を示す。サブプロセス800は、図1の例示のハードウェア実装において、図4に詳細に示すパリティチェッカー116によって示される。サブプロセス800は、二つ又はそれ以上のパリティビットを比較するようにプロセッサに指示し得る。
【0067】
サブプロセス800は、プロセッサが第1のパリティジェネレータから第1のパリティビットを受け取ることを特定するブロック802で始まる。第1のパリティジェネレータは、図2に示すCPUパリティジェネレータ112に対応し得る。サブプロセス800における次のブロックは、プロセッサが第2のパリティジェネレータから第2のパリティビットを受け取ることを特定するブロック804である。第2のパリティジェネレータは、図3に示すメモリパリティジェネレータ128に対応し得る。図4にサブプロセス800の例示の実装を示し、サブプロセス800のブロック802及び804は、インターフェース402によって行われ得る。
【0068】
サブプロセス800における次のブロックはブロック806であり、ブロック806は、二つ又はそれ以上のパリティビットを比較し、これら二つ又はそれ以上のパリティビットが異なるかどうかを特定するブロックである。サブプロセス800のブロック806は、図4の例示のパリティチェッカー116におけるコンパレータ404として実装され得る。ブロック806が二つ又はそれ以上のパリティビットを比較し、これら二つ又はそれ以上のパリティビットが異なると特定する場合、サブプロセス800はブロック808に移行し、そうでない場合、サブプロセス800はブロック810に移行する。
【0069】
サブプロセス800において、ブロック808は、二つ又はそれ以上のパリティビットが異なることを特定する障害を生成するブロックである。この障害は、第1のアドレス情報が第2のアドレス情報とは異なることを示す。第1のアドレス情報は、アドレス生成ユニット106によって用いられるCPU102におけるデータオペランドに対応する。第2のアドレス情報は、ワード線イネーブル値のセット及びビット線イネーブル値のセット、並びに、データがストアされる実際の位置に対応する。ブロック808は、図4の障害ジェネレータ406として実装され得る。
【0070】
サブプロセス800は、次いで、ブロック808からブロック810に移る。ブロック810は、二つ又はそれ以上のパリティビットを比較した結果を、パリティチェッカーの外部にあるプロセッサの一部に送るブロックである。これを実現するために、比較結果はまずインターフェース402に送られ得る。インターフェース402は、次いで、比較結果を、パリティチェッカー116の外部にあるCPU102の一部に送り得る。この結果の値から、CPU102は、障害に対する安全プロトコルを実行するか否かを判定し得る。障害に対する安全プロトコルは、障害の影響を軽減し、或るアプリケーションにおける安全でない状態を防ぐためのものである。サブプロセス800における次のブロックはブロック812であり、ブロック812は、サブプロセス800に図5のプロセス500に戻るように指示するブロックである。
【0071】
図9は、図1のシステムを実装するために図5図6図7、及び図8の命令を実行するように構築される、例示のプロセッサプラットフォーム900のブロック図である。プロセッサプラットフォーム900は、例えば、サーバ、パーソナルコンピュータ、ワークステーション、自己学習機械(例えば、ニューラルネットワーク)、モバイルデバイス(例えば、携帯電話、スマートフォン、iPad(商標)などのタブレット)、携帯情報端末(PDA)、インターネット電気機器、DVDプレーヤ、CDプレーヤ、デジタルビデオレコーダ、Blu-rayプレーヤ、ゲーム機、パーソナルビデオレコーダ、セットトップボックス、ヘッドセット又は他のウェアラブルデバイス、或いは任意の他のタイプのコンピューティングデバイスとし得る。
【0072】
図示の例のプロセッサプラットフォーム900は、プロセッサ912を含む。図示の例のプロセッサ912はハードウェアである。例えば、プロセッサ912は、任意の所望のファミリ又は製造業者からの一つ又は複数の集積回路、論理回路、マイクロプロセッサ、GPU、DSP、或いはコントローラによって実装され得る。ハードウェアプロセッサは、半導体ベース(例えば、シリコンベース)のデバイスとし得る。この例では、プロセッサは、CPUパリティジェネレータ112及びパリティチェッカー116を実装する。
【0073】
図示の例のプロセッサ912は、ローカルメモリ913(例えば、キャッシュ)を含む。図示の例のプロセッサ912は、揮発性メモリ914及び不揮発性メモリ916を含むメインメモリとバス918を介して通信する。揮発性メモリ914は、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダイナミックランダムアクセスメモリ(DRAM)、RAMBUS(登録商標)ダイナミックランダムアクセスメモリ(RDRAM(登録商標))、及び/又は任意の他のタイプのランダムアクセスメモリデバイスによって実装され得る。不揮発性メモリ916は、フラッシュメモリ及び/又は任意の他の所望のタイプのメモリデバイスによって実装され得る。メインメモリ914、916へのアクセスは、メモリコントローラによって制御される。この例では、揮発性メモリ914は、メモリパリティジェネレータ128を含む。
【0074】
図示の例のプロセッサプラットフォーム900は、インターフェース回路920も含む。インターフェース回路920は、例えば、イーサネットインターフェース、ユニバーサルシリアルバス(USB)、ブルートゥース(登録商標)インターフェース、近距離通信(NFC)インターフェース、及び/又はPCIエクスプレスインターフェースなど、任意のタイプのインターフェース規格によって実装され得る。
【0075】
図示の例では、一つ又は複数の入力デバイス922がインターフェース回路920に接続される。入力デバイス922により、ユーザはデータ及び/又はコマンドをプロセッサ912に入力し得る。入力デバイスは、例えば、オーディオセンサー、マイク、カメラ(静止画又は動画)、キーボード、ボタン、マウス、タッチスクリーン、トラックパッド、トラックボール、アイソポイント、及び/又は音声認識システムによって実装され得る。
【0076】
また、一つ又は複数の出力デバイス924が、図示の例のインターフェース回路920に接続される。出力デバイス924は、例えば、ディスプレイデバイス(例えば、発光ダイオード(LED)、有機発光ダイオード(OLED)、液晶ディスプレイ(LDC)、陰極線管ディスプレイ(CRT)、面内スイッチング(IPS)ディスプレイ、タッチスクリーンなど)、触覚出力デバイス、プリンター、及び/又はスピーカー)によって実装され得る。そのため、図示の例のインターフェース回路920は、典型的に、グラフィックスドライバカード、グラフィックスドライバチップ、及び/又はグラフィックスドライバプロセッサを含む。
【0077】
図示の例のインターフェース回路920は、ネットワーク926を介して外部マシン(例えば、任意のタイプのコンピューティングデバイス)とのデータの交換を容易にするために、送信機、受信機、トランシーバ、モデム、住宅用ゲートウェイ、無線アクセスポイント、及び/又はネットワークインターフェースなどの通信デバイスも含む。こういった通信は、例えば、イーサネット接続、デジタル加入者線(DSL)接続、電話回線接続、同軸ケーブルシステム、衛星システム、LOS(line-of-sight)無線システム、携帯電話システムなどを介して行い得る。
【0078】
図示の例のプロセッサプラットフォーム900は、ソフトウェア及び/又はデータをストアするための一つ又は複数の大容量ストア装置928も含む。このような大容量ストア装置928の例には、フロッピーディスクドライブ、ハードドライブディスク(ハードディスクドライブ?)、コンパクトディスクドライブ、Blu-rayディスクドライブ、独立したディスクの冗長アレイ(RAID)システム、及びデジタル多用途ディスク(DVD)ドライブが含まれる。
【0079】
図5図6、及び図8の機械実行可能命令932は、大容量ストア装置928、揮発性メモリ914、不揮発性メモリ916、及び/又は、CDやDVDなどの取り外し可能な非一時的コンピュータ可読ストア媒体にストアされ得る。
【0080】
上述から、従来の解決策はその破壊的性質のためにアプリケーションの起動時又は停止時にしか実装され得ないが、アプリケーションのランタイムの間の障害検出を可能にする(例えば、ランタイムの間に用いられる)一方で、ワード線及びビット線障害に対する適用範囲を最大にする、例示の方法、装置、及び物品が開示されていることが理解されよう。以前の解決策が破壊性を有するのは、以前の解決策が完全なテストを中断することなく実行するためには、メモリを機能的に使用不能にしなければならないからである。そのため、テスト中のメモリはかなりの時間利用可能にならないので、システム性能に大きな影響を及ぼす。逆に、本明細書で開示される例示の方法、装置、及び物品を用いる場合、障害の監視及びシステム性能は以前の解決策による場合のように損なわれることなく、メモリは完全に機能する。また、アドレス情報のための適応型のオンザフライフィードバックをCPUに提供する例示の方法、装置、及び物品が開示されていることも理解されよう。開示された方法、装置、及び物品は、プロセッサにおけるアドレス情報の生成と処理システムのメモリにおけるアドレス情報の使用との間のループを閉じることによって、コンピューティングデバイスの使用効率を改善する。これにより、アドレス情報の初期生成と、そのアドレス情報を特定のワード線イネーブル値及びビット線イネーブル値に復号することとの間に生じ得る障害に対する保護が強化され得る。したがって、開示された方法、装置、及び物品は、コンピュータの機能における一つ又は複数の改善に向けられている。
【0081】
本特許は、本特許の特許請求の範囲に公正に含まれるすべての方法、装置、及び物品を網羅する。
図1
図2
図3
図4
図5
図6
図7
図8
図9