(57)【特許請求の範囲】
【請求項１】
Ｍビットの群における非ワンホット状態を検出するための方法において、
第１の回路により、前記Ｍビットの群を、少なくとも２ｌｏｇ２Ｍ符号化ビットの群に、前記Ｍビットの群における各ワンホット状態が前記符号化ビットの群において一意の状態を生成するように、符号化するステップであって、前記第１の回路は、前記Ｍビットの群における各ビットをそれぞれ入力するためのＭ個の入力信号線と、前記２ｌｏｇ２Ｍ符号化ビットの群における各符号化ビットをそれぞれ出力するための２ｌｏｇ２Ｍ個の中間信号線と、前記入力信号線と前記中間信号線とを接続する複数のスイッチング素子と、を有し、前記２ｌｏｇ２Ｍ符号化ビットの群は、それぞれｌｏｇ２Ｍ個の第１の群および第２の群を成し、該第１の群における各符号化ビットは、前記第２の群における対応する符号化ビットと対を成し、該各対の一方の符号化ビットは、前記Ｍビットの群のうちの第１の部分集合のビット群に前記スイッチング素子によって接続され、他方の符号化ビットは、前記Ｍビットの群のうちのビットの重複しない第２の部分集合のビット群に前記スイッチング素子によって接続され、前記各対におけるいずれの部分集合も他のいずれの対におけるいずれの部分集合とも同じでないように構成されている、符号化するステップと、
第２の回路により、前記符号化ビットに基づいて、前記Ｍビットの群が非ワンホット状態にあるか否かを決定するステップであって、前記第２の回路は、少なくとも１つの前記対における各符号化ビットにそれぞれ対応する前記第１および第２の部分集合のいずれの部分集合のビット群においても少なくとも１つのビットがホットであることを検出することにより、前記Ｍビットの群のうちの２つまたはそれ以上のビットがホットであることを検出するように構成されている、決定するステップと、
を含み、
前記Ｍが２の累乗でない場合には、前記ＭビットをＬ個の非ホットビットで増大したＭ＋Ｌビット（ここで、Ｍ＋Ｌは２の累乗である）の群に対して、前記符号化するステップが実行される、方法。
【請求項２】
共通部分のない２つの部分集合Ｇ１およびＧ２に分割された２Ｍビットの群ＤＤにおいて、
前記第１の回路により、前記Ｍビットの群である前記Ｇ１に対し、前記符号化するステップを実行するステップと、
前記第１の回路により、前記Ｍビットの群である前記Ｇ２に対し、前記符号化するステップを実行するステップと、
第３の回路により、前記Ｇ１およびＧ２に対する符号化ステップの実行結果に基づいて、前記ビットの群ＤＤが非ワンホット状態にあるか否かを決定するステップであって、前記第３の回路は、前記Ｇ１およびＧ２に対する符号化ステップの実行結果に基づいて、前記ビットの群ＤＤのうちの２つまたはそれ以上のビットがホットであることを検出するように構成されている、決定するステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
ビットの群におけるワンホットエラーを検出する方法であって、
共通部分のない２つの部分集合Ｓ０およびＮＳ０に、Ｄ＝Ｓ０∪ＮＳ０となるように分割されたビットの群Ｄに対し、部分集合におけるビットのいずれかがホットであるか否かを決定する第１の回路によって、
（ａ）Ｓ０におけるビットのいずれかがホットであるか否かを決定するステップと、
（ｂ）ＮＳ０におけるビットのいずれかがホットであるか否かを決定するステップと、
共通部分のない２つの部分集合Ｓ１およびＮＳ１に、Ｄ＝Ｓ１∪ＮＳ１で且つＳ０、ＮＳ０、Ｓ１、およびＮＳ１のどれもが同じでないようにして、分割された前記群Ｄに対し、部分集合におけるビットのいずれかがホットであるか否かを決定する第２の回路によって、
（ｃ）Ｓ１におけるビットのいずれかがホットであるか否かを決定するステップと、
（ｄ）ＮＳ１におけるビットのいずれかがホットであるか否かを決定するステップと、
共通部分のない２つの部分集合Ｓ２およびＮＳ２に、Ｄ＝Ｓ２∪ＮＳ２で且つＳ０、ＮＳ０、Ｓ１、ＮＳ１、Ｓ２、およびＮＳ２のどれもが同じでないようにして、分割された前記群Ｄに対し、部分集合におけるビットのいずれかがホットであるか否かを決定する第３の回路によって、
（ｅ）Ｓ２におけるビットのいずれかがホットであるか否かを決定するステップと、
（ｆ）ＮＳ２におけるビットのいずれかがホットであるか否かを決定するステップと、
（ｇ）第４の回路により、前記決定するステップの結果に基づいて、前記群Ｄが２つまたはそれ以上のホットビットを含んでいるか否かを決定するステップと、
を含み、前記ステップ（ｇ）が、
（１）前記ステップ（ａ）および（ｂ）の両方の結果が肯定である、
（２）前記ステップ（ｃ）および（ｄ）の両方の結果が肯定である、
（３）前記ステップ（ｅ）および（ｆ）の両方の結果が肯定である、
の３つの状態のうちのいずれか１つが真であるか否かを決定し、いずれか１つが真である場合には、前記群Ｄがエラーを含んでいると決定するステップを含んでいる、方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、エラー検出に関する。特に、本発明は、エラーのない状態において単一のビットのみがセットされるワンホットワードにおけるエラーを効率的に検出するための方法および装置に関する。
【０００２】
【従来の技術】
バイナリワンホットワードは、単一ビットがハイで、その他すべてのビットがローであるか、あるいは単一ビットがローで、その他すべてのビットがハイであるバイナリビットの集合である。明確のために、本明細書では、バイナリワンホットワードにおける単一の「ホット」または「セット」ビットとは、それが公称的にハイである間他のすべてのビットが公称的にローであるかのように、しかしセットビットが公称的にローである間他のすべてのビットが公称的にハイであることも同等に可能であるものとして参照する。ワンホットワードは、例えば、事前有効化（pre-validated）キャッシュにおけるタグ格納として利用される。ワンホットワードの他の使用法は、当業者には明らかである。
【０００３】
ワンホットワードは、通常２つの方法のうちの一方または双方におけるエラーによって破損する可能性がある。第１の形態の破損では、セットビットがセットされない（すなわち、単一のビット１がゼロに変わる）。この破損の結果、すべてのビットがゼロであるワードが生じる。本明細書で用いるように、「ミス」という用語は、すべてのビットがゼロであるこの状況を指すものである。用途に応じて、ミスはエラー状態であるか、あるいはエラー状態ではない場合がある。例えば、事前有効化キャッシュにおけるミスは妥当であり、非破損状態であるが、他の用途では、ミスは妥当ではない。ワンホットワードの他方の形態の破損は、ローのままであるべき１つまたは複数のビットがセットされることである。すなわち、破損したワンホットワードは、セットビットを２つ以上有する。本明細書で用いるように、「マルチヒット」という用語は、セットされたビットを２つ以上有するワードを指すために用いられるが、「ヒット」という用語は、いずれか１つのまたはそれ以上のセットビットを有するワードを指すために用いられる。
【０００４】
図１は、８ビットワンホットワードにおけるあるタイプのエラーを検出するための論理回路１００を示す。ワンホットワードは、８つの構成ビットＤ０、Ｄ１、．．．、Ｄ７を有し、該ワードはＤ０：Ｄ７と示される。８つのデータビットＤ０、Ｄ１、．．．、Ｄ７は、図１に示すように、左からの論理回路１００に対する入力である。排他的論理和（ＸＯＲ）ゲート１０４、１０８、１１２、１１６、１２０、１２４、および１２８は、８入力排他的論理和機能を形成するように共に接続される。信号ＯＤＤは、最後の排他的論理和ゲート１２８からの出力である。信号ＯＤＤは、ワードＤ０：Ｄ７におけるセットビットの数が奇数であればハイであり、ワードＤ０：Ｄ７におけるセットビットの数が偶数であればローである。
論理回路１００はまた、ＮＡＮＤゲート１５６および１６０に接続されたＮＯＲゲート１４０、１４４、１４８、および１５２も含む。ＮＡＮＤゲート１５６および１６０は、ワードＤ０：Ｄ７のすべてのビットがローである場合に限り、ＮＯＲゲート１６４からの信号ＭＩＳＳ（ミス）出力がハイであるように、ＮＯＲゲート１６４に接続される。インバータゲート１７０は、信号ＭＩＳＳに接続され、かつ信号ＨＩＴ（ヒット）が、インバータゲート１７０から出力される。信号ＨＩＴは、ワードＤ０：Ｄ７の１つまたは複数のビットがハイであれば、ハイである。信号ＯＤＤおよびＭＩＳＳは、ＮＯＲゲート１７４への入力である。ＮＯＲゲート１７４の出力は、信号ＥＶＥＮ  ＭＵＬＴＩＨＩＴ（偶数マルチヒット）であり、これは、ちょうど２つ、またはちょうど４つ、またはちょうど６つ、または８つすべてのデータビットＤ０、Ｄ１、．．．、Ｄ７がハイであるときに、ハイである。このため、論理回路１００は、あるタイプのエラーのあるワンホットワードを検出することができる。しかし、論理回路１００は、ワンホットワードＤ０：Ｄ７におけるすべてのエラーを検出することはできない。特に、論理回路１００が、ワードＤ０：Ｄ７において奇数の数のビットがセットされる場合にエラーを検出することができない。すなわち、ワードＤ０：Ｄ７のちょうど３つ、またはちょうど５つ、またはちょうど７つのビットが、論理回路１００によってワンホットエラーとして検出されない場合である。
【０００５】
【発明が解決しようとする課題】
本発明の課題は、エラーのない状態において単一のビットのみがセットされるワンホットワードにおけるエラーを効率的に検出するための方法および装置を提供することにある。
【０００６】
【課題を解決するための手段】
一態様において、本発明は、ワンホットワードにおけるエラーを検出する際に使用される装置である。本装置は、複数の入力信号線と、入力スイッチ信号線に接続された複数のスイッチング素子と、複数の中間信号線と、論理回路と、を備える。スイッチング素子は、入力信号線に接続される。中間信号線もまた、スイッチング素子に接続される。接続は、特定の入力信号線がセットされているとき、スイッチング素子によって該特定の入力信号線に接続されたすべての中間信号線が所定の論理状態になるよう強制されるような態様である。中間信号線は、論理回路への入力であり、論理回路は、複数の入力信号線のうち少なくとも２つがセットされているか否かを示す信号を出力する。
【０００７】
別の態様において、本発明は、Ｍビットの群において、非ワンホット状態を検出するための方法である。本方法は、Ｍビットの群を少なくとも２ｌｏｇ2Ｍ符号化ビットに符号化して、Ｎビットの群におけるワンホット状態それぞれが符号化ビットの群において一意の状態を生成するようにする。本方法は、Ｍビットの群が非ワンホット状態にあるか否かについて、符号化ビットを基にして決定を行う。少なくとも２ｌｏｇ2Ｍ符号化ビットがそれぞれ少なくともｌｏｇ2Ｍ符号化ビットの２つの群であることが好ましいが、必要不可欠なことではない。例えば（かつ制限としてではなく）、少なくともｌｏｇ2Ｍ符号化ビットの２つの群は、互いの相補的な符号化であってもよい。
【０００８】
さらに別の態様において、本発明は、ビットの群Ｄにおけるワンホットエラーを検出するための方法である。本方法は、まず、ＤがＳ０およびＮＳ０の合併集合になるように、ビットの群Ｄを２つの共通部分のない部分集合Ｓ０およびＮＳ０に分割する。本方法は、部分集合Ｓ０におけるいずれのビットがホットであるかを決定する。本方法はまた、部分集合ＮＳ０におけるいずれのビットがホットであるかも決定する。群Ｄは、再度、ＤがＳ１およびＮＳ１の合併集合となるように、別の２つの完全に異なる共通部分のない部分集合Ｓ１およびＮＳ１に分割される。次に、本方法は、Ｓ１におけるいずれのビットがホットであるか、またＮＳ１におけるいずれのビットがホットであるかを決定する。これまでに行った決定を基にして、本方法は群Ｄがエラーを含むか否かを決定する。
【０００９】
論理回路１００と比較して、本発明のある実施形態は、以下を含む特定の利点を達成することができる。
（１）本発明のある実施形態により、すべての非ワンホットワード（すなわち、偶数であるか、奇数であるかに係わらずにすべてのマルチヒットならびに適用可能な場合にはミス）の検出が可能である。
（２）本発明のある実施形態は、論理回路１００よりも少ない遅延でエラーを検出する目的で、ワンホットワードを処理することができる。特に、論理回路ｌ００では、左側の入力から右側の出力までに７ゲートの遅延がある（ゲート遅延は、本明細書において、ＸＯＲゲートが２単位の遅延をもたらす一方で、インバータまたはＮＡＮＤゲートは１単位のゲート遅延をもたらすという典型的な慣習に従ってカウントされる）。一方、本発明のある実施形態は、同じことを行うのに４ゲートほどと少ない遅延を有する。さらに、ゲート遅延の数は、ワンホットワードのサイズ（すなわち、その中にあるビットの数）に主に無関係であるが、これは論理回路１００には当てはまらない。
（３）本発明のある実施形態は、論理回路１００よりも少ない半導体面積を使用して物理的に実施することができる。
【００１０】
当業者は、添付図面を参照して、以下の好ましい実施形態の詳細な説明を読めば、本発明の各種実施形態のこれらおよび他のメリットおよび利点を理解するであろう。
【００１１】
【発明の実施の形態】
図２は、本発明の一実施形態によるワンホットワードにおいてエラーを検出する際に使用する回路２００の模式図である。公称的にはワンホットワードである８ビットワードＤ０：Ｄ７は、図において水平に示す８つの入力信号線Ｄ０、Ｄ１、．．．、Ｄ７上の回路２００への入力である。入力信号線Ｄ０、Ｄ１、．．．、Ｄ７は、スイッチング素子２０１〜２２４に選択的に接続される。スイッチング素子２０１〜２２４は、長方形アレイが本発明の原理を最もよく示すことから、長方形アレイに構成されて図示されるが、スイッチング素子２０１〜２２４は、任意のいかなる物理的構成にも配置することができる。スイッチング素子２０１〜２２４は、ＮＦＥＴ２０１〜２２４（Ｎチャネル型電界効果トランジスタ）であることが好ましい。各ＮＦＥＴ２０１〜２２４は、ゲート端子において入力信号線に接続される。図２では垂直に示される数本の中間信号線ＮＥ０、Ｅ０、ＮＥ１、Ｅ１、ＮＥ２、およびＥ２もまたＮＦＥＴに接続される。中間信号線ＮＥ０、Ｅ０、ＮＥ１、Ｅ１、ＮＥ２、およびＥ２は、スイッチング素子２０１〜２２４のドレイン端子において選択されたスイッチング素子２０１〜２２４に接続される。スイッチング素子２０１〜２２４のソース端子は、接地される。中間信号線ＮＥ０、Ｅ０、ＮＥ１、Ｅ１、ＮＥ２、およびＥ２はまた、ＰＦＥＴ（Ｐチャネル型電界効果トランジスタ）にも接続される。例えば、中間信号線Ｅ０は、ドレイン端子においてＰＦＥＴ２３１に接続される。同様に、その他の中間信号線ＮＥ０、ＮＥ１、Ｅ１、ＮＥ２、およびＥ２がＰＦＥＴ２３２〜２３６にそれぞれ接続される。ＰＦＥＴ２３１〜２３６はそれぞれ、ゲート端子においてクロック信号ＣＬＫに接続される。クロック信号ＣＬＫに接続されたＰＦＥＴ２３１〜２３６は、中間信号線ＮＥ０、Ｅ０、ＮＥ１、Ｅ１、ＮＥ２、およびＥ２をプレチャージする。したがって、公称的にはＮＥ０＝Ｅ０＝ＮＥ１＝Ｅ１＝ＮＥ２＝Ｅ２＝１である。しかし、入力信号線Ｄ０：Ｄ７により、接続されたスイッチング素子が接続された中間信号線を接地させる。すなわち、中間信号線を、データ線Ｄ０：Ｄ７の状態およびそれらのスイッチング素子２０１〜２２４への接続に応じて、ローに引っ張ることができる。一例として、Ｄ０がハイであり、そのためスイッチング素子２０１、２０９、および２１７がソースからドレインにかけて導通され（すなわち、ターンオン）、したがって中間信号線ＮＥ２、ＮＥ１、およびＮＥ０をロー論理状態にさせる場合を考える。
【００１２】
回路２００を点検してわかるように、Ｄ０、Ｄ１、Ｄ２、またはＤ３のいずれかがセットされる場合、中間信号線ＮＥ２がローに引っ張られる。Ｄ４、Ｄ５、Ｄ６、またはＤ７のいずれかがセットされている場合、中間信号線Ｅ２がローに引っ張られる。したがって、Ｄ０：Ｄ７において２つまたはそれ以上のビット、すなわち、前半分のＤ０：Ｄ３において少なくとも１つのビット、および後半分のＤ４：Ｄ７において少なくとも１つのビットがセットされている場合のみ、ＮＥ２およびＥ２が双方ともローになる。これは、中間信号線ＮＥ２およびＥ２がスイッチング素子２０１〜２０８を介してデータビットの重複しないセットに接続されるため、当てはまる。同様に、中間信号線ＮＥ１およびＥ１は、スイッチング素子２０９〜２１６を介してデータビットの重複しないセット（{Ｄ０、Ｄ１、Ｄ４、Ｄ５}および{Ｄ２、Ｄ３、Ｄ６、Ｄ７}それぞれ）に接続され、中間信号線ＮＥ０およびＥ０は、スイッチング素子２１７〜２２４を介してデータビットの重複しない異なるセット（{Ｄ０、Ｄ２、Ｄ４、Ｄ６}および{Ｄ１、Ｄ３、Ｄ５、Ｄ７}それぞれ）に接続される。
【００１３】
図３の論理回路３００に示すように、中間信号線ＮＥ２およびＥ２は、ＮＡＮＤゲート３０４への入力である。ＮＡＮＤゲート３０４の出力は、信号ＨＩＴであり、これは、Ｅ２またはＮＥ２のいずれかがローである場合にハイである。信号ＭＩＳＳは、信号ＨＩＴに接続されたインバータ３０８によって形成される。信号ＨＩＴおよびＭＩＳＳは、Ｅ１およびＮＥ１が論理回路３００におけるＥ２およびＮＥ２に取って代わった場合、まったく同等である。同様に、信号ＨＩＴおよびＭＩＳＳは、Ｅ０およびＮＥ０が論理回路３００におけるＥ２およびＮＥ２と取って代わった場合、まったく同等である。
【００１４】
中間信号線ＮＥ２、Ｅ２、ＮＥ１、Ｅ１、ＮＥ０、およびＥ０はそれぞれ、インバータゲート３１２〜３３２への入力であり、インバータゲート３１２〜３３２はＮＡＮＤゲート３３６〜３４８に接続されている。ＮＡＮＤゲート３４８の出力は、信号ＭＵＬＴＩＨＩＴ（マルチヒット）であり、これは、Ｄ０：Ｄ７のうちの２つまたはそれ以上がセットされている場合に限りハイである。わかるように、信号ＭＵＬＴＩＨＩＴは、３つの条件のうちの１つまたはそれ以上が満たされる場合にハイである。第１に、ＮＥ２およびＥ２が双方ともローである、つまりＤ０：Ｄ３の中で少なくとも１つのビットがセットされ、かつＤ４：Ｄ７の中で少なくとも１つのビットがセットされていることを意味する場合、信号ＭＵＬＴＩＨＩＴはハイである。第２に、ＮＥ１およびＥ１が双方ともローである、つまりビットの重複しないセット{Ｄ０、Ｄ１、Ｄ４、Ｄ５}および{Ｄ２、Ｄ３、Ｄ６、Ｄ７}の両方において、それらに接続されたデータビットのうちの少なくとも１つがハイであることを意味する場合、信号ＭＵＬＴＩＨＩＴはハイである。第３に、ＮＥ０およびＥ０が双方ともローである、つまりビットの重複しないセット{Ｄ０、Ｄ２、Ｄ４、Ｄ６}および{Ｄ１、Ｄ３、Ｄ５、Ｄ７}の両方において、それらに接続されたデータビットのうちの少なくとも１つがハイであることを意味する場合、信号ＭＵＬＴＩＨＩＴはハイである。したがって、回路２００は、すべての組が異なり、かつ各組のうちの一方がその組の他方と共通部分を持たないように、８つのデータビットＤ０：Ｄ７を３組の値に符号化する。このようにして、Ｄ０：Ｄ７においていずれか２つまたはそれ以上のビットエラーが発生すると、３組のうちの少なくとも１組を双方ともローに引っ張るよう保証される。すなわち、Ｄ０：Ｄ７においてマルチヒットエラーが発生すると、以下のうちの１つまたはそれ以上が引き起こされる。すなわち、（ａ）ＮＥ０およびＥ０を双方ともローに引っ張る、および／または（ｂ）ＮＥ１およびＥ１を双方ともローに引っ張る、および／または（ｃ）ＮＥ２およびＥ２を双方ともローに引っ張る。論理回路３００は、これらの任意の組み合わせを検出する。当業者は、論理回路３００と同一機能を実施するために、異なる多くの論理回路を設計しうることを容易に認識するであろう。例えば、周知のゲート転換の結果として、異なるが、論理的に同等な回路になる。
【００１５】
論理回路３００と組み合わせた回路２００は、偶数のマルチヒットだけでなく、あらゆるマルチヒットを検出することができる。さらに、回路２００および論理回路３００は共に、入力信号線Ｄ０：Ｄ７から出力ＭＵＬＴＩＨＩＴまで、４ゲートの遅延しかもたらさない。回路２００は、１単位の遅延の原因であり、インバータ３１２〜３３２がもう１単位の遅延の原因であり、ＮＡＮＤゲート３３６〜３４４がさらに１単位の遅延をもたらし、最後にＮＡＮＤゲート３４８が１単位の遅延をもたらす。
【００１６】
回路２００および論理回路３００は、８つの入力信号線上で動作するものとして図示されるが、これは広く任意である。当業者は、回路の基本的なパターンを１６、３２、または２つの入力信号線のそれ以上の累乗にスケーリングすることが可能であることを容易に理解しよう。例えば、１６本の入力信号線が処理される場合、中間信号線の追加の組が必要であり（すなわち、ＮＥ３およびＥ３）、かつ１６個のスイッチング素子の４列アレイが必要である。中間信号線は、以下の意味で同じであるパターンに従って、スイッチング素子を介して入力信号線に接続することができる。すなわち、（１）ＮＥ３を上の８本の入力信号線に接続しながら、Ｅ３を下の８本に接続する、（２）ＮＥ２およびＥ２をそれぞれ、連続した４本の入力信号線のセットに交互に接続する、（３）ＮＥ１およびＥ１をそれぞれ連続した２本の入力信号線のセットに交互に接続する、（４）ＮＥ０およびＥ０をそれぞれ、１本おきの入力信号線に接続する。入力信号線の数が２の累乗に満たず、かつ２の累乗の回路構造を利用している場合には、追加の入力信号線を非ホット（例えば、ロー）状態に固定することもできる。あるいは、２を累乗した数ではない入力信号線を直接許容する回路構造を利用してもよい。
【００１７】
一般に、本方法は、２ビットからＴビットまでのＭの値すべてについて機能するが、但しＴは、ワイヤードＯＲ回路の最大幅等、ハードウェア技術に対しての最大限度である。例えば、ハードウェア技術によりワイヤードＯＲ回路の幅が３２ビット以下に制限され、かつ入力ビットが、第２の群が第１の群の相補的符号化であるｌｏｇ2Ｍビットの２つの群に符号化される場合、Ｍは、２≦Ｍ≦６４であるいずれの数であってもよい。２つの符号化群におけるビットがそれぞれ３２個のスイッチング素子に接続され、かつワイヤードＯＲゲートの技術的限度が３２ビットであるため、この例示的な例において、最大は６４ビットである。
【００１８】
図４Ａ、Ｂおよび図５は、本発明の別の実施形態を示したものである。図４Ａおよび図４Ｂは、回路４００を示す。図５は、論理回路５００を示す。ある意味において、図４Ａ、Ｂおよび図５に示す実施形態は、図２および図３に図示した実施形態を最適化したものである。図２のように、図４Ａ、Ｂにおける入力信号線Ｄ０：Ｄ７は、左からの入力であり、スイッチング素子４０１〜４１６に接続される。また、クロック信号ＣＬＫも、プリチャージ構成でＰＦＥＴ４３１〜４３８に接続される。中間信号線ＮＥ０、Ｅ０、ＮＥ１、Ｅ１、Ｆ０、ＮＦ０、Ｆ１およびＮＦ１は、スイッチング素子４０１〜４１６に選択的に接続されると共に、信号ＭＵＬＴＩＨＩＴを生成するためにＮＡＮＤゲート５０４〜５４０に入力され、かつ信号ＨＩＴおよびＭＩＳＳを生成するために、インバータ５４８に連結されたＮＯＲゲート５４４に入力される。当業者は、論理回路５００からの信号ＭＵＬＴＩＨＩＴ、ＨＩＴ、およびＭＩＳＳという出力は、論理回路３００からの同じ信号出力と同等であることを容易に確認することができる。特に、信号ＨＩＴは、Ｄ０：Ｄ７におけるいずれか１つまたはそれ以上のビットがセットされている場合にハイである。信号ＭＵＬＴＩＨＩＴは、入力ビットＤ０：Ｄ７の群のうち２つまたはそれ以上がハイである場合に限り、ハイとなる。図２および図３と比較して、図４Ａ、Ｂおよび図５の構成は、ある望ましい特性を有する。例えば、回路４００の場合、入力負荷がより少ない。また、第２の実施形態は、論理回路５００が一方の側にある図４Ａに示す回路４００の部分と、他方の側にある図４Ｂに示す回路４００の部分の間の中間領域に配置される場合、より少ない垂直ワイヤトラックで、マルチレベル回路において物理的に実施することができる。
【００１９】
回路２００および論理回路３００は共に、または回路４００および論理回路５００は共に、概してＭビットの群において非ワンホット状態を検出するための方法を物理的に実施したものである。本方法は、例えばハードウェア、ソフトウェア、またはファームウェアにおいて実施することがすることが好ましい。本方法において、Ｍビットの群を符号化ビットの２つの群に符号化することが好ましい。各群は、少なくともｌｏｇ2Ｍ（ｌｏｇ2Ｍよりも次に大きな整数等）の符号化ビットを含む。符号化は、Ｍビットの群におけるワンホット状態がそれぞれ、符号化ビットにおいて一意の状態を生成するようなものである。例に続いて、８ビットのＤ０：Ｄ７は、第２の群の符号化ビットが第１の群の符号化ビットの相補的符号化である、それぞれ３つのビットを含む２つの群に符号化される。回路２００を再度参照すると、第１の群の符号化ビットは、中間信号線Ｅ０、Ｅ１、およびＥ２に対応する。第２の群の符号化ビットは、中間信号線ＮＥ０、ＮＥ１、およびＮＥ２に対応する。本方法は、Ｍビットの群が非ワンホット状態にあるか否かについて、符号化ビットを基にして決定する。この決定ステップは、例えば論理回路３００によって行われる。
【００２０】
Ｍが２の累乗ではない場合、本方法は、ＭビットをＬ個の非ホットビットで増大して、Ｎビットの群を形成することができる（但し、Ｎ＝Ｍ＋Ｌであり、かつＮは２の累乗である）。例えば、５つのビットＤ０：Ｄ４のみがワンホット状態についてテストされる場合には、入力信号線Ｄ５、Ｄ６、およびＤ７は、図２における非ホット状態（例えば、ロー）に結びつけられる。この例の場合の本方法に関して、Ｍ＝５かつＬ＝３であるため、それらの和であるＮは２の累乗である（Ｎ＝８＝２3）。次に、本方法は、上述したように、Ｍ個のビットの代わりにＮ個の入力ビットで続けられる。あるいは、本方法は、２の累乗ではない数のビットに対して直接動作することができる。
【００２１】
別の実施形態において、本方法は通常、ビットの群Ｄ、例えば、入力信号線Ｄ０、Ｄ１、．．．、Ｄ７の８ビットのセットにおいて動作して、群Ｄがその公称ワンホット（または考えられ得るミス）状態からのエラーによって破損しているか否かを決定する。本方法は、Ｄを、Ｓ０およびＮＳ０で表すことができる２つの共通部分のない部分集合に分割する。例えば、論理回路２００において、Ｓ０は、スイッチング素子を介して中間信号線ＮＥ０に接続された入力信号線のセットである。すなわち、Ｓ０＝{Ｄ０、Ｄ１、Ｄ２、Ｄ３}である。同様に、ＮＳ０は、スイッチング素子を介して中間信号線Ｅ０に接続された入力信号線のセット、すなわち{Ｄ４、Ｄ５、Ｄ６、Ｄ７}である。Ｄ＝Ｓ０∪ＮＳ０。本方法は、Ｓ０におけるいずれか１つまたはそれ以上のビットがホットであるか否かを決定するとともに、ＮＳ０におけるいずれか１つまたはそれ以上のビットがホットであるか否かを決定する。本方法はまた、Ｄを別の方法で共通部分のない部分集合Ｓ１およびＮＳ１に分割する。例えば、回路２００においてそれぞれ中間信号線ＮＥ１およびＥ１に接続された、Ｓ１＝{Ｄ０、Ｄ１、Ｄ４、Ｄ５}およびＮＳ１＝{Ｄ２、Ｄ３、Ｄ６、Ｄ７}である。なお、Ｓ０、ＮＳ０、Ｓ１、およびＮＳ１のいずれも同じ部分集合ではないことに留意する。本方法は、Ｓ１におけるいずれか１つまたはそれ以上のビットがホットであるか否かを決定するとともに、ＮＳ１におけるいずれか１つまたはそれ以上のビットがホットであるか否かを決定する。分割の部分集合の各組において１つまたはそれ以上のビットがホットであるか否かを決定する都度、群Ｄのサイズに応じて必要であれば、本方法を続けてＤの分割を行ってもよい。例えば、回路２００は、中間信号線ＮＥ２およびＥ２への接続により、ＤをＳ２＝{Ｄ０、Ｄ２、Ｄ４、Ｄ６}およびＮＳ２＝{Ｄ１、Ｄ３、Ｄ５、Ｄ７}に分割する。部分集合においていずれかのビットがホットであるか否かの決定を基にして、本方法は、上述したように、ビットの群Ｄにおいてマルチヒットがあるか否かを決定することができる。特定の部分集合Ｓ０、ＮＳ０、Ｓ１、ＮＳ１、Ｓ２、およびＮＳ２は例示的なものである。異なる部分集合が可能である。具体的には、部分集合Ｓ０、ＮＳ０、Ｓ１、ＮＳ１、Ｓ２、およびＮＳ２と、まとめて１対１で対応している任意の部分集合のセットで十分である。別の方法では、部分集合Ｓ０、ＮＳ０、Ｓ１、ＮＳ１、Ｓ２、およびＮＳ２にまとめて適用した任意の全単写像が適した部分集合のセットを生成する。
【００２２】
ちょうど本装置の変形が可能であるように、本方法の変形も可能である。例えば、図４Ａ、Ｂおよび図５に示す本装置の実施形態は、上述した本方法の変形の物理的な実施である。基本的に、この変形は、ビットの群ＤＤを２つの共通部分のない部分集合（例えば、第１の部分集合Ｇ１＝Ｄ０：Ｄ３、および第２の部分集合Ｇ２＝Ｄ４：Ｄ７）に分割し、各部分集合に対して上述した第１の方法を行い、それからその結果を論理的に結合する。この点から、図４Ａは、群ＤＤ＝Ｄ０：Ｄ７の部分集合Ｄ０：Ｄ３に対して本方法の一部を行うものとして見ることができ、また、図４Ｂは、部分集合Ｄ４：Ｄ７に対して本方法の一部を行うものとして見ることができる。
【００２３】
図６は、モジュラビルディングブロックとして図４Ａ、Ｂおよび図５に示す組み合わせを有するカスケード式ワンホットエラー検出器６００である。特に、サブ検出器６０５〜６４０はそれぞれ、回路４００および論理回路５００の組み合わせである。サブ検出器６４５も同様に同じである。エラー検出器６００において、６４ビットワンホットワードが、公称なワンホット状態からの破損を検出するために、処理される。６４ビットの群は、サブ検出器６０５〜６４０それぞれにより一度に８ビットずつ処理される。サブ検出器６０４〜６４０からの出力ＨＩＴ０、ＨＩＴ１、．．．、ＨＩＴ７は、図示のように、８ビット入力データとしてサブ検出器６４５へ入力される。さらに、サブ検出器６０５〜６４０からのマルチヒット信号ＭＨＩＴ０、ＭＨＩＴ１、．．．、ＭＨＩＴ７の出力は、ＮＦＥＴ６５１〜６５８、ＮＡＮＤゲート６６０、ＮＯＲゲート６６５、およびインバータ６７０によって論理的に結合されて、図示のように、信号ＭＵＬＴＩＨＩＴを生成する。エラー検出器６００からの信号ＭＵＬＴＩＨＩＴ出力は、サブ検出器６０５〜６４０のいずれかからの任意のＭＨＩＴ信号がハイである場合、あるいは２つまたはそれ以上のサブ検出器６０５〜６４０からのＨＩＴ信号がハイである場合にはハイであり、したがってサブ検出器６４５からの信号ＧＭＨＩＴ出力をハイにさせる。いずれの場合でも、２つまたはそれ以上のセットビットが６４入力ビット内にあるか否かに係わらず、エラー検出器６００によってマルチヒットが検出される。
【００２４】
同様にして、ワンホットエラー検出器は、図６に示すパターンに従ういかなる任意のワードサイズについて構築することができる。例えば、エラー検出器６００を二度複製して、それらの出力を適切に結合することで、１２８ビットワンホットエラー検出器を構築することができ、このような場合、より広いエラー検出器の総伝播遅延は、ほんのわずか（例えば、１または２ゲート遅延）だけ増大するにすぎない。あるいは、上述したように、各サブ検出器６０５〜６４０のサイズまたは入力幅を増大することで、より大きなワンホットエラー検出器を構築することができる。例えば、８ビットのサブ検出器６０５〜６４０の代わりに１６ビットのサブ検出器を使用すると、結果として１２８ビットのワンホットエラー検出器になる。
【００２５】
本明細書で用いた用語および説明は、例示としてだけのものであり、制限を意味するものではない。当業者は、すべての用語は、別記されない限りその最も広義の意味で理解されるべきである添付の特許請求の範囲およびその同等物に定義される本発明の精神および範囲内で多くの変形が可能であることを認識するであろう。
【００２６】
以上、本発明の実施例について詳述したが、以下、本発明の各実施態様の例を示す。
【００２７】
[実施態様１]
複数の入力信号線（Ｄ０〜Ｄ７）と、
前記入力信号線（Ｄ０〜Ｄ７）に接続された複数のスイッチング素子（２０１〜２２４、４０１〜４１６）と、
特定の入力信号線（Ｄ０〜Ｄ７）がセットされたとき、前記スイッチング素子（２０１〜２２４、４０１〜４１６）を介して前記特定の入力信号線（Ｄ０〜Ｄ７）に接続されたすべての中間信号線（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）が第１の所定の論理状態になるよう強制されるように、それぞれ前記スイッチング素子（２０１〜２２４、４０１〜４１６）のいくつかに接続された複数の中間信号線（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）と、
前記複数の中間信号線（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）を入力として受け入れ、前記複数の入力信号線（Ｄ０〜Ｄ７）のうち少なくとも２つがセットされているか否かを示す信号を出力する論理回路（３００、５００）と、
を備えて成る装置。
【００２８】
[実施態様２]
前記スイッチング素子（２０１〜２２４、４０１〜４１６）がトランジスタであることを特徴とする、実施態様１に記載の装置。
【００２９】
[実施態様３]
前記トランジスタはＮＦＥＴであり、前記入力信号線（Ｄ０〜Ｄ７）は、ゲート端子において前記ＮＦＥＴに接続され、前記中間信号線（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）は、ドレイン端子において前記ＮＦＥＴに接続され、かつ前記ＮＦＥＴは、ソース端子において接地されることを特徴とする、実施態様２に記載の装置。
【００３０】
[実施態様４]
前記中間信号線（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）は、接続された入力信号線（Ｄ０〜Ｄ７）がセットされていない場合に、第２の所定の論理状態にバイアスされることを特徴とする、実施態様１に記載の装置。
【００３１】
[実施態様５]
接続された入力信号線（Ｄ０〜Ｄ７）がセットされていない場合に、前記中間信号線（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）を前記第２の所定の論理状態にバイアスする複数のバイアス素子（２３１〜２３６、４３１〜４３８）をさらに備えて成ることを特徴とする、実施態様４に記載の装置。
【００３２】
[実施態様６]
前記入力信号線（Ｄ０〜Ｄ７）は、バイナリハイ状態にあるときにセットされることを特徴とする、実施態様１に記載の装置。
【００３３】
[実施態様７]
Ｍビット（Ｄ０〜Ｄ７）の群において非ワンホット状態を検出するための方法であって、
前記Ｍビット（Ｄ０〜Ｄ７）の群におけるワンホット状態がそれぞれ、符号化ビット（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）の群において一意の状態を生成するように、前記Ｍビット（Ｄ０〜Ｄ７）の群を少なくとも２ｌｏｇ2Ｍ符号化ビット（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）の群に符号化するステップと、
前記符号化ビット（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）に基づいて、前記Ｍビット（Ｄ０〜Ｄ７）の群が非ワンホット状態にあるか否かを決定するステップと、
を備えて成る方法。
【００３４】
[実施態様８]
前記Ｍは２の累乗であることを特徴とする、実施態様７に記載の方法。
【００３５】
[実施態様９]
少なくとも２ｌｏｇ2Ｍ符号化ビット（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）の前記群が、それぞれが少なくともｌｏｇ2Ｍ符号化ビットを有する２つの群からなることを特徴とする、実施態様７に記載の方法。
【００３６】
[実施態様１０]
少なくとも２ｌｏｇ2Ｍ符号化ビット（Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１）の前記群が、符号化ビットの組からなり、符号化ビットの各組について、各組それぞれの一方の符号化ビットが、Ｍビットの各半分に基づいており、かつ各組それぞれの他方の符号化ビットが、Ｍビットの他方の各半分に基づいていることを特徴とする、実施態様９に記載の方法。
【００３７】
【発明の効果】
以上説明したように、本発明を用いることにより、エラーのない状態において単一のビットのみがセットされるワンホットワードにおけるエラーを効率的に検出することができる。
【図面の簡単な説明】
【図１】パリティエラーを検出するための回路の論理図である。
【図２】本発明の一実施形態によるワンホットワードにおけるエラーを検出する際に使用する回路の模式図である。
【図３】本発明の一実施形態によるワンホットワードにおけるエラーを検出する際に使用する論理回路の図である。
【図４Ａ】本発明の一実施形態によるワンホットワードにおけるエラーを検出する際に使用する回路の模式図である。
【図４Ｂ】本発明の一実施形態によるワンホットワードにおけるエラーを検出する際に使用する回路の模式図である。
【図５】本発明の別の実施形態によるワンホットワードにおけるエラーを検出する際に使用する論理回路を示す図である。
【図６】カスケード式ワンホットエラー検出器を示す図である。
【符号の説明】
Ｄ０〜Ｄ７：入力信号線、Ｍビット
２０１〜２２４、４０１〜４１６：スイッチング素子
Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｅ２、ＮＥ２；Ｅ０、ＮＥ０、Ｅ１、ＮＥ１、Ｆ０、ＮＦ０、Ｆ１、ＮＦ１：中間信号線、符号化ビット
２３１〜２３６、４３１〜４３８：バイアス素子
３００、５００：論理回路
【図１】
0004731677.tif 000002
【図２】
0004731677.tif 000003
【図３】
0004731677.tif 000004
【図４Ａ】
0004731677.tif 000005
【図４Ｂ】
0004731677.tif 000006
【図５】
0004731677.tif 000007
【図６】
0004731677.tif 000008