(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-24
(54)【発明の名称】制御レジスタのパリティ保護
(51)【国際特許分類】
G06F 11/10 20060101AFI20250117BHJP
【FI】
G06F11/10 604
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024537116
(86)(22)【出願日】2022-09-14
(85)【翻訳文提出日】2024-06-19
(86)【国際出願番号】 US2022043520
(87)【国際公開番号】W WO2023136867
(87)【国際公開日】2023-07-20
(32)【優先日】2022-01-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】アザド,サロシュ・アイ
(72)【発明者】
【氏名】ガネサン,アディティ・アール
(57)【要約】
レジスタ内の誤りを検出するための集積回路(IC)デバイスであって、このICデバイスはレジスタ、及びパリティチェック回路を含む。パリティチェック回路は、レジスタに結合され、第1パリティ回路、第2パリティ回路、及び誤り検出回路を含む。第1パリティ回路は、レジスタから第1レジスタ値を受信し、第1レジスタ値から第1値を決定する。第2パリティ回路は、レジスタから第2レジスタ値を受信し、第2レジスタ値から第2値を決定する。誤り検出回路は、第1値と第2値とを比較して、レジスタ内の第1誤りを検出し、第1誤りを示す誤り信号を出力する。
【特許請求の範囲】
【請求項1】
集積回路(IC)デバイスであって、
複数のレジスタと、
前記複数のレジスタに結合されたパリティチェック回路であって、
前記複数のレジスタから第1レジスタ値を受信し、前記第1レジスタ値から第1値を決定するように構成された、第1パリティ回路と、
前記複数のレジスタから第2レジスタ値を受信し、前記第2レジスタ値から第2値を決定するように構成された、第2パリティ回路と、
誤り検出回路であって、
前記第1値と前記第2値とを比較して、前記複数のレジスタ内で第1誤りを検出することと、
前記第1誤りを示す誤り信号を出力することと、を実行するように構成された誤り検出回路と、を含む、パリティチェック回路と、を含む、集積回路(IC)デバイス。
【請求項2】
前記パリティチェック回路が、
前記第1レジスタ値を受信し、前記第1レジスタ値から第3値を決定するように構成された第3パリティ回路と、
前記第2レジスタ値を受信し、前記第2レジスタ値から第4値を決定するように構成された第4パリティ回路と、を更に含み、前記誤り検出回路が、前記第1値、前記第2値、前記第3値、及び前記第4値に基づいて、前記パリティチェック回路内で第2誤りを検出するように更に構成されている、請求項1に記載のICデバイス。
【請求項3】
前記誤り検出回路が、前記第2誤りを、
前記第1値と前記第2値との比較に基づいて、第1信号を生成することと、
前記第3値と前記第4値との比較に基づいて、第2信号を生成することと、
前記第1信号と前記第2信号とを比較することと、によって、検出するように構成されている、請求項2に記載のICデバイス。
【請求項4】
前記第1パリティ回路が、第1中間値を決定するためにマスクを前記第1レジスタ値に適用することによって、前記第1値を決定するように構成され、前記マスクがマスク値を含み、前記第1レジスタ値の各々が、前記マスク値のそれぞれのマスク値に対応する、請求項1に記載のICデバイス。
【請求項5】
前記第1パリティ回路が、前記第1値を、
前記第1中間値に基づいて第2中間値を決定することと、
前記第2中間値と有効値とを比較することと、によって、決定するように更に構成されている、請求項4に記載のICデバイス。
【請求項6】
前記パリティチェック回路が、モニタイネーブル信号に基づいて、前記第1値を決定するように構成されている、請求項1に記載のICデバイス。
【請求項7】
前記第1値が第1期間中に決定され、前記第2値が第2期間中に決定され、前記第1期間と前記第2期間が重複していない、請求項1に記載のICデバイス。
【請求項8】
パリティチェック回路であって、
複数のレジスタから第1レジスタ値を受信し、前記第1レジスタ値から第1値を決定するように構成された、第1パリティ回路と、
前記複数のレジスタから第2レジスタ値を受信し、前記第2レジスタ値から第2値を決定するように構成された、第2パリティ回路と、
誤り検出回路であって、
前記第1値と前記第2値とを比較して、前記複数のレジスタ内で第1誤りを決定することと、
前記第1誤りを示す誤り信号を出力することと、を実行するように構成された誤り検出回路と、を含む、パリティチェック回路。
【請求項9】
前記第1レジスタ値から第3値を決定するように構成された第3パリティ回路と、
前記第2レジスタ値から第4値を決定するように構成された第4パリティ回路と、を更に含み、前記誤り検出回路が、前記第1値、前記第2値、前記第3値、及び前記第4値に基づいて、前記パリティチェック回路内で第2誤りを決定するように更に構成されている、請求項8に記載のパリティチェック回路。
【請求項10】
前記誤り検出回路が、前記第2誤りを、
前記第1値と前記第2値との比較に基づいて第1信号を生成することと、
前記第3値と前記第4値との比較に基づいて第2信号を生成することと、
前記第1信号と前記第2信号とを比較することと、によって、決定するように構成されている、請求項9に記載のパリティチェック回路。
【請求項11】
前記第1パリティ回路が、第1中間値を決定するためにマスクを前記複数のレジスタの第1サブセットの前記第1レジスタ値に適用することによって、前記第1値を決定するように構成され、前記マスクが、マスク値を含み、前記第1レジスタ値の各々が、前記マスク値のそれぞれのマスク値に対応する、請求項8に記載のパリティチェック回路。
【請求項12】
前記第1パリティ回路が、前記第1値を、
前記第1中間値に基づいて第2中間値を決定することと、
前記第2中間値と有効値とを比較することと、によって、決定するように構成されている、請求項11に記載のパリティチェック回路。
【請求項13】
前記第1パリティ回路が、第1期間中に前記第1値を決定するように構成され、前記第2パリティ回路が、第2期間中に前記第2値を決定するように構成され、前記第1期間と前記第2期間が重複していない、請求項8に記載のパリティチェック回路。
【請求項14】
方法であって、
集積回路(IC)デバイスのパリティチェック回路の第1パリティ回路によって、前記ICデバイスの複数のレジスタの第1レジスタ値から第1値を決定することと、
前記パリティチェック回路の第2パリティ回路によって、前記複数のレジスタの第2レジスタ値から第2値を決定することと、
前記第1と第2値とを比較して、前記複数のレジスタ内で第1誤りを決定することと、
前記第1誤りを示す誤り信号を出力することと、を含む、方法。
【請求項15】
前記パリティチェック回路の第3パリティ回路によって、前記第1レジスタ値から第3値を決定することと、
前記パリティチェック回路の第4パリティ回路によって、前記第2レジスタ値から第4値を決定することと、
前記第1値、前記第2値、前記第3値、及び前記第4値に基づいて、前記パリティチェック回路内で第2誤りを決定することと、を更に含み、前記第2誤りを決定することが、
前記第1値と前記第2値との比較に基づいて第1信号を生成することと、
前記第3値と前記第4値との比較に基づいて第2信号を生成することと、
前記第1信号と前記第2信号とを比較することと、を含む、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の実施例は、全般に、無効なレジスタ値を検出することに関し、より具体的には、パリティ回路を使用して、無効なレジスタ値を検出することに関する。
【背景技術】
【0002】
高いレベルの動作安全性を要する用途において、集積回路(IC)デバイスは、安全動作標準を満たすことが必要とされる。かかる用途は、ICデバイスの障害によって、オペレータを危険な状況に追い込む恐れのある動作環境に対応する。かかる用途の一例は、自動車用途である。自動車用途では、ICデバイスは、ISO 26262規格に規定された自動車安全度水準の1つを満たす必要がある。例えば、ICデバイスは、ランダム故障を99%検出可能であることを要求するASIL-D規格(例えば、単一箇所における故障検出率(SPFM))を満たすことが要求される。様々な実装形態において、モニタリング技術を適用することにより、様々なICデバイスは99%のSPFMを達成することができる。いくつかの実装形態では、ICデバイスは、ソフトウェアモニタリングを採用して、レジスタ値の妥当性を決定するためにICデバイスのレジスタ値を周期的にチェックする。しかしながら、ソフトウェアモニタリング技術では、レジスタ値の妥当性を定期的にチェックするので、ICデバイスの動作に悪影響が及ぶまで、レジスタ値への1つ以上の変化が検出されない可能性がある。更に、ソフトウェアモニタリングソリューションは、ICデバイスの処理リソースを使用して、ICデバイス上で実行する1つ以上のアプリケーションが利用可能な処理リソースの量を削減させる。
【発明の概要】
【課題を解決するための手段】
【0003】
集積回路(IC)デバイスは、ICデバイスの制御レジスタの値に対する誤った値変化(例えば、無効値)を検出する、ハードウェアベースの技術を含む。ハードウェアベースの技術は、ICデバイスの動作に悪影響が及ぶ前に、誤った値変化が検出されるように、制御レジスタを途切れなくモニタすることができる。一例では、ICデバイスは、ICデバイスの制御レジスタの値をモニタし、制御レジスタ内で検出された誤りを報告するパリティチェック回路を含む。パリティチェック回路は、レジスタのサブセットのパリティ値を生成し、このパリティ値を使用して、制御レジスタの値内に存在する誤りを検出する。
【0004】
一例では、レジスタ内の誤りを検出するためのICデバイスであって、このICデバイスはレジスタ、及びパリティチェック回路を含む。パリティチェック回路は、レジスタに結合され、第1パリティ回路、第2パリティ回路、及び誤り検出回路を含む。第1パリティ回路は、レジスタから第1レジスタ値を受信し、第1レジスタ値から第1値を決定する。第2パリティ回路は、レジスタから第2レジスタ値を受信し、第2レジスタ値から第2値を決定する。誤り検出回路は、第1値と第2値とを比較して、レジスタ内の第1誤りを検出し、第1誤りを示す誤り信号を出力する。
【0005】
一例では、方法は、ICデバイスのパリティチェック回路の第1パリティ回路によって、ICデバイスの複数のレジスタの第1レジスタ値から、第1値を決定することを含む。この方法は、パリティチェック回路の第2パリティ回路によって、複数のレジスタの第2レジスタ値から、第2値を決定することを更に含む。更に、この方法は、第1値と第2値とを比較して、複数のレジスタ内の第1誤りを決定することと、この第1誤りを示す誤り信号を出力することと、を含む。
【0006】
一例では、パリティチェック回路は、第1パリティ回路と、第2パリティ回路と、誤り検出回路と、を含む。第1パリティ回路は、複数のレジスタから第1レジスタ値を受信し、第1レジスタ値から第1値を決定する。第2パリティ回路は、複数のレジスタから第2レジスタ値を受信し、第2レジスタ値から第2値を決定する。誤り検出回路は、第1値と第2値とを比較して、複数のレジスタ内の第1誤りを決定し、第1誤りを示す誤り信号を出力する。
【0007】
上記の特徴が詳細に理解され得るように、上記で簡潔に要約されたより具体的な説明が、例示的な実装形態を参照することによって行われ得、それらの実装形態のうちのいくつかが添付の図面に例解される。しかしながら、添付の図面は、典型的な例示の実装形態のみを例解しており、したがって、その範囲を限定するものとみなされるべきではないことに留意されたい。
【図面の簡単な説明】
【0008】
【
図1】一実施例に係る、集積回路デバイスの概略図である。
【
図2】一実施例に係る、集積回路デバイスの部分概略図である。
【
図3】一実施例に係る、パリティ回路の概略図である。
【
図4】一実施例に係る、誤り検出器回路の部分概略図である。
【
図5】一実施例に係る、レジスタ内の誤りを検出する方法の流れ図である。
【発明を実施するための形態】
【0009】
理解を容易にするために、可能な場合には、図面に共通する同一の要素を示すために同一の参照番号が使用されている。一実施例の要素は、他の例に有益に組み込まれ得ることが企図される。
【0010】
集積回路(IC)デバイスはレジスタを含み、レジスタの値はICデバイスの動作を制御し得る。かかるレジスタは、制御レジスタと呼ぶことができる。レジスタの値が変化すると、ICデバイスの動作が変化する。いくつかの実施例では、ICデバイス上で実行するアプリケーションは、ICデバイスの動作を構成、又は変更するために、レジスタの1つ以上の値を変化させる。しかしながら、他の実施例では、レジスタのうち1つ以上のレジスタ値が、誤って変更され得る。レジスタの値が誤って変わると、レジスタの値が意図しない値となり、ICデバイスの動作に悪影響を及ぼす恐れがある。レジスタの値は、対応するICデバイス内の欠陥、レジスタ内の単一事象反転(SEU)、又はレジスタへの不正確な(例えば、意図しない)書込みに起因して、誤って変更され得る。SEUは、レジスタの回路素子内の付随的な電気的影響により、レジスタの値を変化させる。誤った書き込みは、誤ったレジスタにルーティングされたデータに対応する。
【0011】
無効値を有するレジスタは、対応するICデバイスの動作を変化させ得る。ICデバイスの動作を変化させると、対応するシステム内の障害を招き得る。障害によりオペレータの安全が危険にさらされる恐れのあるシステムでは、レジスタ内の無効値を検出することで、ICデバイスの動作が変更されないことを確保し、対応するシステム内で障害が発生する尤度を下げ、オペレータの安全性を高める。
【0012】
以下では、レジスタの値をモニタするパリティチェック回路を含む、ICデバイスについて、説明する。パリティチェック回路は、誤って変更されたレジスタ値を検出するハードウェアベースの技術を使用する。パリティチェック回路は、レジスタのサブセットからレジスタ値を受信し、パリティ計算を使用して、レジスタの値内に誤りが存在するか否かを決定する。パリティチェック回路が、ハードウェアベースの技術を使用して、レジスタ値をモニタするので、対応するデバイスの処理リソースは、レジスタ値のモニタリング専用ではない。更に、パリティチェック回路は、レジスタの値を途切れなくモニタすることができる。したがって、ソフトウェアモニタリング技術を採用したICデバイスと比較して、ICデバイス上で実行するアプリケーションが利用できる処理リソースが増加し、無効なレジスタ値がより迅速に検出される。
【0013】
様々な特徴が、図面を参照して以下に記載される。図面は縮尺どおりに描かれている場合もあるか、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、特許請求された発明の網羅的な説明として又は特許請求された発明の範囲を限定するものとして意図されていない。加えて、例解された実施例は、図示された全ての態様、又は利点を有する必要はない。特定の実施例に関連して記載される態様又は利点は、必ずしもその実施例に限定されず、そのように例解されていなくても、又はそのように明示的に記載されていなくても、任意の他の例において実施され得る。
【0014】
図1は、1つ以上の実施例に係る、ICデバイス100を例示する。ICデバイス100は、コントローラ110と、制御回路120と、レジスタブロック130と、パリティチェック回路140と、相互接続150と、を含む。ICデバイス100は、フィールドプログラマブルゲートアレイ(FPGA)などの、プログラマブルロジックデバイスであり得る。他の実施例では、ICデバイス100は、とりわけ、特定用途向けIC(ASIC)、中央処理ユニット(CPU)、又はグラフィック処理ユニット(GPU)である。1つ以上の実施例において、ICデバイス100は、システムオンチップ(SoC)である。また、ICデバイス100は、1つ以上のICチップを含む。様々な例において、ICデバイス100は、プログラマブルロジック、及び強化された制御回路を含む。プログラマブルロジックは、プログラマブルロジックの機能性を変更するために、制御データ(例えば、ビットストリーム)を介して再プログラムされ得る一方、強化された制御回路の機能性は依然として一定のままである。
【0015】
コントローラ110は、相互接続150を介して制御回路120と通信する。相互接続150は、Advanced eXtensible Interface(AXI)相互接続であり得る。他の実施例では、相互接続150は、別の種類の相互接続である。コントローラ110は、レジスタブロック130の1つ以上のレジスタの値を更新するための命令、及びデータを制御回路120に提供する。更に、コントローラ110は、レジスタブロック130の1つ以上のレジスタの値を読み込む命令を、制御回路120に提供する。一実施例では、コントローラ110は、1つ以上の対応する機能を実行するために、メモリ内に格納された命令を実行する。命令はアプリケーションに対応し、機能は、アプリケーションに基づいてICデバイスによって実行される、1つ以上のアクションに対応する。例えば、アプリケーションは、自動車のセンサデバイスから受信されたセンサデータをモニタリングすることに対応し得る。
【0016】
レジスタブロック130は、制御レジスタブロックと呼ぶことができる。レジスタブロック130は、1つ以上のレジスタ(例えば、制御レジスタ)を含み、それぞれが、1つ以上の対応するレジスタ値を有する。一実施例では、レジスタブロック130内のレジスタの数はNである。Nは1より大きい正の整数である。他の実施例では、Nは16、32、64、128、256、又は、それ以上である。レジスタブロック内の各レジスタは、Mビットレジスタである。Mは、1より大きい正の整数である。一実施例では、Mは16、32、64、128、256、又は、それ以上である。レジスタブロック130内のレジスタの各々は、それぞれが対応するレジスタ値を格納する複数のフリップフロップを含む。フリップフロップは、複数の行、及び列に配置される。フリップフロップの各行は、レジスタブロック130内の異なるレジスタに対応する。更に、各フリップフロップは、対応するレジスタの対応するビット(例えば、レジスタ値)を格納する。
【0017】
レジスタブロック130は、制御回路120に接続し、この制御回路によって制御される。例えば、レジスタブロック130は、相互接続150、及び制御回路120を介してコントローラ110から、読み込みコマンド、書き込みコマンド、及びデータを受信することができる。
【0018】
パリティチェック回路140は、レジスタブロック130に接続する。更に、パリティチェック回路140は、制御回路120、及びコントローラ110の1つ以上に接続する。パリティチェック回路140は、レジスタブロック130からレジスタ値を受信し、レジスタブロック130の1つ以上の値が無効値を格納するかどうかを判定する。無効値は、レジスタブロック130内の値が期待値と異なり、誤って変更されたことを示す。
【0019】
パリティチェック回路140は、レジスタブロック130内の無効値の検出に基づいて、誤り信号160を出力する。ICデバイス100内の欠陥、レジスタブロック130内のSEU、又は、レジスタの1つに対する誤った(例えば、意図しない)書込みに起因して、レジスタブロック130の値は変更され得る。パリティチェック回路140は、ICデバイス100からの誤り信号160を、この誤り信号160に基づいて、1つ以上の訂正アクションを取るように構成された処理システムに出力する。例えば、処理システムは、無効なレジスタ値(例えば、誤り)を示す誤り信号160に基づいて、他のアクションの中でも特に、ICデバイス100をリセットするか、ICデバイス100上で実行するアプリケーションを停止するか、又はレジスタブロック130をリセットすることができる。
【0020】
パリティチェック回路140は、コントローラ110、又は制御回路120からモニタ信号を受信する。モニタ信号(「モニタイネーブル信号」とも呼ばれる)は、レジスタブロック130の値をモニタすることを、パリティチェック回路140に示すために、アサートされる。モニタ信号は、レジスタブロック130内の1つ以上のレジスタのモニタリングを停止(又は、一時停止)することを、パリティチェック回路140に示すために、デアサートされる。一実施例では、モニタ信号は、レジスタブロック130の値の1つ以上が更新された際、デアサートされる。更新されるべきレジスタに対応するモニタ信号がデアサートされる一方、更新されるべきではないレジスタに対応するモニタ信号がアサートされる。一実施例では、コントローラ110、又は制御回路120は、レジスタ値が更新されるべきであることを決定し、パリティチェック回路140がレジスタブロック130の更新されるべきレジスタをモニタリングするのを一時停止(例えば、停止)するために、対応するモニタ信号をデアサートする。他の実施例では、パリティチェック回路140のモニタリング動作を制御するために、単一モニタリング信号が使用される。かかる実施例では、モニタリング信号がデアサートされたことに基づいて、パリティチェック回路140は、レジスタブロック130全体のモニタリングを一時停止する。
【0021】
図1において、ICデバイス100は、1つのレジスタブロック130を含むものとして、例示されている。他の実施例では、ICデバイス100は2つ以上のレジスタブロックを含む。一実施例では、ICデバイスはN個のレジスタブロックを含み、Nは3以上である。更に、かかる実施例では、各レジスタブロックは、ICデバイス100が2つ以上のパリティチェック回路140を含むように、対応するパリティチェック回路140によってモニタされ得る。
【0022】
図2は、1つ以上の実施例に係る、ICデバイス100の一部を例示する。例えば、
図2は、レジスタブロック130、及びパリティチェック回路140を例示する。レジスタブロック130は、レジスタ132
1~132
Nを含む。Nは、1より大きい整数である。例えば、Nは、8、16、32、64、138、256、又はそれ以上である。レジスタ132の各々は、Mビット(例えば、M個の値)を格納する。Mは2以上である。例えば、Mは、4、8、16、32、64、128、256、又はそれ以上である。
【0023】
レジスタ132の各々はパリティチェック回路140に接続する。パリティチェック回路140は、パリティ計算回路210及び220と、誤り検出回路230と、を含む。パリティ計算回路210及び220は、互いに類似している。例えば、パリティ計算回路210はパリティ回路212を含み、パリティ計算回路220はパリティ回路222を含む。一実施例では、パリティ計算回路210はパリティ回路2121~212Nを含み、パリティ計算回路220はパリティ回路2221~222Nを含む。Nは、1より大きい整数である。例えば、Nは、8、16、32、64、138、256、又はそれ以上である。
【0024】
パリティ回路212及び222の各々は、レジスタブロック130の対応するレジスタ132のレジスタ値から対応する値214、224を決定する。一実施例では、パリティ回路212の各々は、レジスタ132の各レジスタのそれぞれの第1ビットに関する値214を決定する。例えば、パリティ回路212
1は、レジスタ132の各々のビット[1]から値214
1を決定する。また、パリティ回路212
2は、レジスタ132の各々のビット[2]から値214
2を決定する。更に、パリティ回路212
Nは、レジスタ132の各々のビット[N]から値214
Nを決定する。更に、パリティ回路222の各々は、レジスタ132の各レジスタのそれぞれの第1ビットに関する値224を決定する。例えば、パリティ回路222
1は、レジスタ132の各々のビット[1]から値224
1を決定する。また、パリティ回路222
2は、レジスタ132の各々のビット[2]から値224
2を決定する。更に、パリティ回路222
Nは、レジスタ132の各々のビット[N]から値224
Nを決定する。値214、及び224を決定するためのかかる方式は、垂直パリティ方式と呼ばれることがある。更に、パリティ回路212及び222の各々は、各レジスタ132からのレジスタ値に基づいて、値を決定する。他の実施例において、パリティ回路212及び222それぞれは、それぞれのレジスタ132のレジスタ値202から値を決定し得る。一実施例では、第1パリティ回路(例えば、パリティ回路212
1)は、レジスタ値(例えば、レジスタ値202)を受信し、レジスタ値を比較して、第1値を決定する。レジスタ値は、1つ以上のレジスタ132の1つ以上のビットを含み得る。第1値の決定を、
図3に関して更に説明する。
【0025】
パリティ回路212及び222それぞれは、それぞれのレジスタ値を比較して、それぞれの値を決定する。パリティ回路212の各々、及びパリティ回路222の各々は、レジスタ132に接続されている。一実施例では、各パリティ回路212及び各パリティ回路222は、レジスタ132の2つ以上に接続されている。一特定実施例では、各パリティ回路212及び各パリティ回路222は、レジスタ132の各々に接続されている。1つ以上の実施例では、パリティ回路212の各々、及びパリティ回路222の各々は、レジスタ132のそれぞれのサブセットに接続され、サブセットは、レジスタ132の1つ以上を含む。
【0026】
一実施例では、レジスタ132の数は、パリティ回路212の数及びパリティ回路222の数以上である。かかる例では、パリティ回路212及び222の各々は、レジスタ132の各々からビットを受信する。パリティ回路212及び222は、垂直パリティチェック方式で機能する。別の実施例では、レジスタ132の数は、パリティ回路212及びパリティ回路222の数よりも少ない。かかる実施例では、パリティ回路212の各々は、レジスタ132のそれぞれ1つからビットを受信し、パリティ回路222の各々は、レジスタ132のそれぞれ1つからビットを受信する。
【0027】
パリティ回路212の1つとパリティ回路222の1つが同じレジスタから同じレジスタ値を受信するように、パリティ回路212と222は、ペアとなって機能する。かかる実施例では、パリティ回路212と222のペアは、同じレジスタ値を処理して、対応する値214、224を決定する。更に、パリティ回路212と222のペアは、同じマスク204を受信する。
【0028】
マスク204は、コントローラ110、又は制御回路120から受信される。マスク204は、ICデバイス100内のメモリから受信される。一実施例では、マスク204は、ICデバイス100のレジスタ内に格納される。コントローラ110は、マスク204をICデバイス100のメモリ、又はレジスタから制御回路に提供する。マスク204は、値214、224を決定するために、パリティ回路212と222が使用する、レジスタ値202のビットを識別する。例えば、マスク204は、対応するパリティ回路212及び222によって実行されるパリティ計算に影響を与えないように、レジスタ値202の1つ以上を所定値(例えば、1、又は0)に設定する。各マスク204は、レジスタ132の数に等しいビット数を有する。例えば、マスク2041は、レジスタ値202の各々に関する値(例えば、ビット)を含み、マスク2042は、レジスタ値202の各々に関する値(例えば、ビット)を含み、マスク204Nは、レジスタ値202の各々に関する値(例えば、ビット)を含む。一実施例では、マスク204は、読み込み-書き込みフィールド、又は、レジスタに書き込まれる値がレジスタブロック130のレジスタ132内で予測可能なフィールドに対応する。マスク204は、予測不可能となり得る(例えば、パリティチェック回路140が知らないうちに変動し得る値を有する)、レジスタ132内のビットを除外するために使用することができる。1つ以上の実施例では、マスク204はハードコードされ得る。
【0029】
一実施例では、パリティ回路2121は、レジスタ1321~132Nから、レジスタ値2021~202Nからの1つ以上の第1ビットを受信し、パリティ回路2122は、レジスタ1321~132Nから、レジスタ値2021~202Nからの1つ以上の第2ビットを受信し、パリティ回路212Nは、レジスタ1321~132Nから、レジスタ値2021~202Nからの1つ以上の第3ビットを受信する。パリティ回路2121はマスク2041を受信し、パリティ回路2122はマスク2042を受信し、パリティ回路212Nはマスク204Nを受信する。パリティ回路2221は、レジスタ1321~132Nから、レジスタ値2021~202Nの1つ以上の第1レジスタ値を受信し、パリティ回路2222は、レジスタ1321~132Nから、レジスタ値2021~202Nの1つ以上の第2レジスタ値を受信し、パリティ回路222Nは、レジスタ1321~132Nから、レジスタ値2021~202Nの1つ以上の第3レジスタ値を受信する。パリティ回路2221はマスク2041を受信し、パリティ回路2222はマスク2042を受信し、パリティ回路222Nはマスク204Nを受信する。
【0030】
各パリティ回路212及び222は、対応するレジスタ値202及びマスク204から、対応する値214、224を決定する。パリティ回路2121は、レジスタ値2021~202Nの第1ビット、及びマスク2041から値2141を決定する。パリティ回路2122は、レジスタ値2021~202Nの第2ビット、及びマスク2042から値2142を決定する。パリティ回路212Nは、レジスタ値2021~202Nの第3ビット、及びマスク204Nから値214Nを決定する。パリティ回路2221は、レジスタ値2021~202Nの第1ビット、及びマスク2041から値2241を決定する。パリティ回路2222は、レジスタ値2021~202Nの第2ビット、及びマスク2042から値2242を決定する。パリティ回路222Nは、レジスタ値2021~202Nの第3ビット、及びマスク204Nから値224Nを決定する。
【0031】
誤り検出回路230は、パリティ回路212及び222の各々から、値214及び224を受信する。誤り検出回路230は、値214及び224から、誤り信号160を決定する。一実施例では、誤り検出回路230は、値214及び224を処理して、誤り信号160を決定する。一実施例では、誤り検出回路230は、モニタ信号206が有効化されていることに基づいて、誤り信号160を決定し、モニタ信号206が無効化されていることに基づいて、誤り信号160を決定するための、値214及び224の処理を停止する。モニタ信号206は、コントローラ110、又は制御回路120から受信され、コントローラ110、又は制御回路120によって生成される(例えば、有効化又は無効化される)。
【0032】
一実施例では、パリティ回路212及び222の各々によって、モニタ信号が受信される。かかる実施例では、パリティ回路212及び222の1つ以上が無効化される一方、パリティ回路212及び222の1つ以上の第2パリティ回路が有効化される。モニタ信号は、1つ以上のレジスタ132に対応し得る。一実施例では、モニタ信号が2つ以上のレジスタ132(例えば、レジスタ132のグループ)に対応する場合、1つ以上のパリティ回路212、及びパリティ回路222の1つ以上は、同じモニタ信号を受信する。更に、かかる実施例において、複数のレジスタ132が共通期間中に書き込まれ得るように(例えば、変更、又は更新される)、複数のレジスタ132のモニタリング機能は、同時に無効化される。有効化されたパリティ回路212及び222は、レジスタ132の値をモニタする一方、無効化されたパリティ回路212及び222は、レジスタ132の値のモニタリングを一時停止する。したがって、パリティ回路212及び/又は222が無効化されると、無効化されたパリティ回路は、無効化されたパリティ回路212及び222がモニタリングしているレジスタ132内の無効値を検出するために、誤り検出回路230によって使用されるべき値を生成しない。
【0033】
1つ以上の実施例では、パリティ回路212及び222を介したレジスタ132のモニタリングは、レジスタ132が互いに独立してモニタされるように、制御され得る。かかる実施例では、複数のモニタ信号を使用して、パリティ回路212及び222のモニタ機能を独立して制御する。一実施例では、1つ以上の第1レジスタ132に関連付けられたパリティ回路212、222は、1つ以上の第1モニタ信号に基づいて有効化される一方、1つ以上の第2レジスタ132に関連付けられたパリティ回路212及び222は、1つ以上の第2モニタ信号に基づいて無効化される。したがって、1つ以上の第1レジスタ132はパリティ回路212及び222によってモニタされる一方、1つ以上の第2レジスタ132はモニタされず、1つ以上の第2レジスタ132の値を更新することができる。
【0034】
一実施例では、パリティ回路212の2つ以上が、対応するレジスタ値202、及びマスク204を受信し、少なくとも部分的に重複する期間中、対応する値214を生成する。例えば、パリティ回路212の1つ以上は、パリティ回路222の1つ以上が値214を生成する時と少なくとも部分的に重複する期間中に、値224を生成する。他の実施例では、パリティ回路212の2つ以上が、対応するレジスタ値202、及びマスク204を受信し、重複しない期間中、対応する値214を生成する。一実施例では、パリティ回路212はパイプライン方式で値を生成する。
【0035】
一実施例では、パリティチェック回路140は、コントローラ110のクロックドメインで動作する。別の実施例では、パリティチェック回路140は、レジスタ132のクロックドメインで動作する。1つ以上の実施例において、パリティチェック回路140は、他のクロックドメインにおいて動作する。パリティチェック回路140がレジスタ132のクロックドメインで動作する実施例では、レジスタ132は、出力値202をパリティチェック回路140へと直接出力する。他の実施例では、パリティチェック回路140、及びレジスタ132の1つ以上は、異なるクロックドメインで動作する。かかる実施例では、パリティチェック回路140は、レジスタ132に結合する同期回路の出力をモニタする。例えば、パリティチェック回路140は、レジスタ132に結合する同期回路によって出力されたレジスタ値202を受信する。
【0036】
図3は、1つ以上の実施例に係る、パリティ回路300の概略的回路図を例解する。
図2のパリティ回路212及び222は、パリティ回路300と同様に構成され得る。一実施例では、パリティ回路300は、レジスタ(例えば、レジスタ132の1つ以上)から、レジスタ値302を受信し、レジスタ値から値(例えば、値214、又は値224)を決定する。パリティ回路300は、ANDゲート310と、XORゲート312と、同期回路314と、ラッチ回路316と、比較回路318と、を含む。1つ以上の実施例では、
図3で例示する論理ゲートの代わりに、他の論理ゲートが使用され得る。例えば、NANDゲートは、ANDゲート310及び/又は318の代わりに使用してもよい。
【0037】
各ANDゲート310は、1つ以上のレジスタからのそれぞれのレジスタ値(例えば、レジスタビット)と、マスクの値(例えば、マスクビット)と、を受信する。例えば、ANDゲート310
1は、レジスタ値302の第1レジスタ値(例えば、レジスタ値302
1)と、マスク304の第1マスク値(例えば、マスクビット304
1)と、を受信する。レジスタ値302は、
図2のレジスタ値202
1~202
Nの1つ以上に対応し、マスク304は、
図2のマスク204
1~204
Nの1つに対応する。一実施例において、レジスタ値302は、レジスタ132のサブセットのレジスタ値に対応する。
【0038】
各ANDゲート310は、レジスタ値とマスク値との比較に基づいて、信号311を生成する。更に、各ANDゲート310は、レジスタ132の各々からビットを受信する。例えば、各ANDゲート310は、レジスタ132の各々の値202の同じ位置のビットを受信する。例えば、ANDゲート3101は、値2021の第1ビットを受信する。更に、ANDゲート310Nは、値202Nの第1ビットを受信する。一実施例では、レジスタブロック130は、複数のビットを含む、レジスタ132のアレイを含む。かかる実施例において、各ANDゲート310は各レジスタ132からビットを受信し、各ビットは各レジスタ132内の同じ位置にある。
【0039】
信号311は、中間値と呼ぶことができる。一実施例では、ANDゲート3101は、レジスタ値3021(例えば、レジスタ値2021の第1ビット)、及びマスクビット3041に基づいて、信号3111を生成し、ANDゲート310Nは、レジスタ値302N(例えば、レジスタ値202Nの第1ビット)、及びマスクビット304Nに基づいて、信号311Nを生成する。ANDゲート3101は、レジスタ値3021、及び論理値1を有するマスクビット3041に基づいて、論理値1を有する信号3111を生成し、レジスタ値3021、及び/又は、論理値0を有するマスクビット3041に基づいて、論理値0を有する信号3111を生成する。一実施例では、論理値0を有するマスクビット3041は、論理値0を有するANDゲート3101の出力を生成する。マスク304の値は、対応するレジスタ内に格納されたデータの種類に対応する。
【0040】
ANDゲート310Nは、レジスタ値302N、及び論理値1を有するマスクビット(例えば、値)304Nに基づいて、論理値1を有する信号311Nを生成し、レジスタ値302N、及び/又は、論理値0を有するマスクビット304Nに基づいて、論理値0を有する信号311Nを生成する。例えば、論理値0を有するマスクビット304Nは、論理値0を有するANDゲート310Nの出力を生成する。
【0041】
様々な実施例では、マスク304のビットを論理値0へと選択的に設定することにより、ANDゲート310の出力が論理値0を有するように制御される。したがって、マスク値は、次のパリティ計算で使用される、信号311の論理値を制御することができる。
【0042】
信号311は、XORゲート312に出力される。XORゲートは、信号311の比較に基づいて、信号313を出力する。例えば、XORゲートは、論理値1を有する信号313の数が奇数である場合、論理値1を有する信号313を出力し、論理値1を有する信号311の数が偶数である場合、論理値0を有する論理値313を出力する。信号313は、中間値と呼ぶことができる。一実施例では、信号313は、リアルタイムでパリティ信号と称され得る。XORゲートへの入力信号が2つのみ存在し、入力信号が0、又は1の論理値のいずれかの同じ値を有する実施例では、信号313は論理値0を有し、信号3111及び311Nが異なる値を有する場合(例えば、0、又は1の論理値のいずれか)、信号313の論理値は1である。信号313は、ラッチ回路316及び比較回路318に出力される。
【0043】
同期回路314は、モニタ信号306を受信し、モニタ信号306をモニタして、ラッチ回路316が信号317を出力できるようにするか、又は、出力できないようにする。同期回路314は、モニタ信号306がアサートされていることに基づいて、ラッチ回路316が信号317を出力できるようにし、モニタ信号306がデアサートされていることに基づいて、ラッチ回路316が信号317を出力できないようにする。したがって、モニタ信号306は、対応するモニタリング機能を有効化するか、又は、無効化することができる。信号317は、パリティ信号、又はゴールデンパリティ値と称される。信号317は、パリティ回路300、及び対応するレジスタ132について、有効パリティ値(例えば、既知の良好なパリティ値)である。例えば、信号317の論理値は、対応するレジスタ132、又はレジスタ132のサブセットについて、有効パリティ値である。信号317は、対応するレジスタ132の値に基づく。一実施例では、信号317の値は、コントローラ110、又は制御回路120から受信され得るか、又は、対応するレジスタに格納された1つ以上の値から決定され得る。一実施例では、モニタ信号306が、対応する1つ以上のレジスタ132のモニタリング機能を有効化する際(例えば、モニタ信号の立ち上がりエッジ)、対応する1つ以上のレジスタ132の値に基づいて、信号317の値が決定される。
【0044】
モニタ信号306はパリティ回路300によって受信され、パリティ回路300は、モニタ信号306の値に基づいて、対応する1つ以上のレジスタ132をモニタするタイミングを、決定する。一実施例では、同期回路314が省略され、パリティ回路300のモニタリング機能を有効化、又は無効化するよう、モニタ信号306がラッチ回路316によって受信される。かかる実施例において、モニタ信号306は、パリティ回路300のクロックドメイン内にある。
【0045】
比較回路318は信号313及び317を受信し、信号313と信号317が共に同じ値を有する場合は、論理値1を出力し、信号313と信号317が異なる値有する場合は、論理値0を出力する。比較回路318は、信号313と信号317とが互いに等しくないことに基づいて、レジスタ値302内に誤りがあることを示す、値214又は値224を生成する。更に、比較回路318は、信号313と信号317とが等しいことに基づいて、レジスタ値302が誤り無しであることを示す、値214又は値224を生成する。値214又は値224は、誤り検出回路(例えば、
図2の誤り検出回路230)に出力される。
【0046】
図4は、1つ以上の実施例に係る、誤り検出回路230の概略ブロック図を例解する。一実施例では、誤り検出回路230は、値214、及び値224を受信し、これら値の比較に基づいて、レジスタ(例えば、
図2のレジスタ132)内の誤り、及び/又は、パリティチェック回路(例えば、パリティチェック回路140)内の誤りを決定する。誤り検出回路230は、ORゲート410、ORゲート420、ANDゲート430、及び、XORゲート440を含む。1つ以上の実施例では、
図4で例示する論理ゲートの代替えとして、他の論理ゲートが使用され得る。例えば、NANDゲートは、ANDゲートの代わりに使用され得る。
【0047】
ORゲート410はパリティ回路222の各々から値214を受信し、ORゲート420はパリティ回路212の各々から値を受信する。値214と値224は、
図3の説明に関して値214を決定する方法と同様に決定される。
【0048】
ORゲート410は、値214の比較に基づいて、信号412を生成する。例えば、ORゲートは、論理値1を有する値214の1つ以上に基づいて、論理値1を有する信号412を生成し、論理値0を有する値214の各々に基づいて、論理値0を有する信号412を生成する。したがって、値の1つ以上が誤りを示す場合(例えば、論理値1を有する)、ORゲート410は、誤りが検出されたことを示す論理値1を有する信号412を生成する。
【0049】
ORゲート420は、値224の比較に基づいて、信号422を生成する。例えば、ORゲート420は、論理値1を有する値224の1つ以上に基づいて、論理値1を有する信号422を生成し、論理値0を有する値224の各々に基づいて、論理値0を有する信号422を生成する。したがって、値の1つ以上が誤りを示す(例えば、論理値1を有する)場合、ORゲート420は、誤りが検出されたことを示す論理値1を有する信号422を生成する。
【0050】
ANDゲート430は、信号412及び422を受信し、信号412及び422の比較に基づいて、信号432を生成する。例えば、ANDゲートは、信号412及び422の双方が論理値1を有する場合、論理値1を有する信号432を生成する。ANDゲート430は、論理値0を有する信号412及び422の1つ以上に基づいて、論理値0を有する信号442を生成する。
【0051】
XORゲート440は、信号412及び422を受信し、信号412及び422の比較に基づいて、信号442を生成する。例えば、信号412及び422の一方のみが論理値1を有する場合、XORゲートは、論理値1を有する信号442を生成する。XORゲート440は、同じ論理値(例えば、論理値1、又は0のいずれか)を有する信号412及び422に基づいて、論理値0を有する信号442を生成する。
【0052】
一実施例では、パリティ計算回路220、及び誤り検出回路230は、パリティチェック回路140内に障害が存在するか否かを決定する。例えば、上述のとおり、パリティ計算回路220は、パリティ計算回路210と同様に構成され、同じデータ(例えば、レジスタ値202、及びマスク204)を受信する。パリティ計算回路220は、パリティ計算回路210に対して冗長化されているものと呼ぶことができる。したがって、パリティチェック回路140に障害がない場合、信号412及び422は同じ値を有する。パリティチェック回路140内に障害が1つ以上ある場合、信号412及び422は異なる値を有する。したがって、ANDゲート430とXORゲート440との組合せは、信号432及び442に対応するビットを含む、2ビット誤り信号160を提供する。
【0053】
信号442の値を使用して、信号412及び422が同じ(例えば、誤り無し)であるかどうかを決定する。例えば、信号432の論理値が0であり、かつ、信号442の論理値が0である場合、信号412及び422はいずれも論理値0となる。したがって、対応するICデバイス内では、誤りは検出されない。更に、信号432の論理値が0であり、かつ、信号442の論理値が1である場合、信号412、及び信号422は異なる値を有する。したがって、論理値0を有する信号432、及び論理値1を有する信号442は、パリティチェック回路140が1つ以上の障害を有することを示す。
【0054】
信号432及び442は、誤り信号160のビットとして、ICデバイス(例えば、
図1のICデバイス100)から出力される。誤り信号160は、処理システムに提供され、そこで、訂正アクションがあれば、どの訂正アクションを取るべきかを決定する。一実施例では、誤り信号160の第1ビットは、信号432の論理値に対応する。第1ビットが論理値1を有することに基づいて、レジスタ値の誤りが決定され、処理システムは、他のアクションの中でも特に、ICデバイス100の動作を停止するか、ICデバイス100をリセットするか、又は、ICデバイス100のレジスタ値を変更する。誤り信号160の第2ビットは、信号442の論理値に対応する。第1ビットが論理値0を有し、かつ、第2ビットが論理値1を有することに基づいて、処理システムは、1つ以上の障害がパリティチェック回路140内に存在すると決定し、他のアクションの中でもとりわけ、ICデバイス100の動作を停止するか、ICデバイス100をリセットするか、又は、パリティチェック回路140の値をリセットする。第1ビットが論理値0を有し、かつ、第2ビットが論理値0を有することに基づいて、処理システムは、レジスタ値、及びパリティチェック回路140が誤り無しであると決定し、訂正アクションを取らない。
【0055】
図5は、1つ以上の実施例に係る、レジスタブロックのレジスタ値内の誤りを検出する方法500の流れ図を例解する。
図2及び
図4を参照して、
図5について説明する。ブロック510において、レジスタのレジスタ値のサブセットに関する第1値を決定する。例えば、パリティ回路212
1は、レジスタ132
1~132
Nから、レジスタ値202
1~202
Nの各々からの1つ以上のビット(例えば、値)を受信する。更に、パリティ回路212
1は、マスク204
1を受信する。コントローラ(例えば、
図1のコントローラ110)、又は制御回路(例えば、
図1の制御回路120)から、マスク204
1を受信する。パリティ回路212
1は、レジスタ値202
1~202
Nの各々の各ビット(例えば、値)をマスク204
1の値と比較して、値214
1の計算に使用されるべきレジスタ値を決定する。マスク204
1の値を使用して、レジスタ値202の対応する値を、パリティ計算用の既知の値(例えば、1、又は0の値)に設定する。パリティ回路212
1は、レジスタ値202
1~202
Nの各々からの値(ビット)をマスクの対応する値と比較して(例えば、論理的AND、又は別の論理演算)、複数の信号(例えば、信号311)を生成し、これらの信号を互いに比較することで、論理値1の値を有する信号の数が奇数又は偶数であるかどうかを決定する。一実施例において、論理値1を有する信号の数が奇数であると決定されたことに基づいて、論理値1を有する信号が出力され、論理値1を有する信号の数が偶数であると決定されたことに基づいて、論理値0を有する信号が出力される。
図3を参照すると、この信号は313である。この信号を対応するゴールデンパリティ信号(例えば、信号317)と比較して、パリティ回路212
1とレジスタ132
1のパリティの不一致、及び/又は変化を決定する。一実施例では、パリティ回路212
1は、アサートされている対応するモニタ信号に基づいて、値214
1を決定する。この値は、信号が同じ(つまり、レジスタが有効値を有する)場合、論理値1を有し、信号が異なる(つまり、レジスタが無効値を有する)場合、論理値0を有する。
【0056】
ブロック520で、第2レジスタサブセットに関する第2値が決定される。例えば、パリティ回路212
2は、レジスタ132から、レジスタ値202
1~202
Nからの第2値(例えば、第2ビット)を受信する。更に、パリティ回路212
2は、マスク204
2を受信する。マスク204
2は、コントローラ(例えば、
図1のコントローラ110)、又は制御回路(例えば、
図1の制御回路120)から受信される。パリティ回路212
2は、レジスタ値202
1~202
Nの各々の第2値をマスク204
2の値と比較して、値214
2の計算において使用されるべき、レジスタ値を決定する。マスク204
2の値を使用して、レジスタ値202の対応する値を、パリティ計算用の既知の値(例えば、1、又は0の値)に設定する。パリティ回路212
2は、各レジスタ値202
2をマスクの対応する値と比較して、複数の信号(例えば、信号311)を生成し、これらの信号を互いに比較して、論理値1の値を有する信号の数が奇数又は偶数であるかどうかを決定する。一実施例において、論理値1を有する信号の数が奇数であると決定されたことに基づいて、論理値1を有する信号が出力され、論理値1を有する信号の数が偶数であると決定されたことに基づいて、論理値0を有する信号が出力される。
図3を参照すると、この信号は信号313である。この信号を対応するゴールデンパリティ信号(例えば、信号317)と比較して、パリティ回路212
2とレジスタ132
2のパリティの不一致、及び/又は変化を決定する。一実施例では、パリティ回路212
2は、アサートされている対応するモニタ信号に基づいて、値214
2を決定する。この値は、信号が同じ(つまり、レジスタが有効値を有する)場合、論理値1を有し、信号が異なる(つまり、レジスタが無効値を有する)場合、論理値0を有する。
【0057】
ブロック530で、第1値及び第2値に基づいて、複数のレジスタ内で誤りが検出される。例えば、誤り検出回路230は、値2141と2142とを比較する。値2141及び2142のいずれかが、対応するレジスタの値内で誤りを示す場合、ブロック540で、パリティチェック回路140は、誤りを示す160を出力する。値2141及び2142がいずれも、対応するレジスタの値内で誤りがないことを示す場合、ブロック540で、パリティチェック回路140は、レジスタ内で誤りが存在しないことを示す誤り信号160を出力する。
【0058】
ICデバイスの制御レジスタ内の値に対する誤った値変更(例えば、無効値)を検出するためのハードウェアベースの技術について、上述した。例えば、パリティチェック回路は、ICデバイスの動作に悪影響が及ぶ前に、レジスタ値に対する誤った値変化が検出されるように、制御レジスタをモニタする。パリティチェック回路は、レジスタのサブセットの値を生成し、その値を使用して、制御レジスタの値内に誤りが存在するか否かを決定する。
【0059】
上記は特定の例を対象とするが、他の実施例及び更なる実施例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の「特許請求の範囲」によって決定される。
【国際調査報告】