宇宙線に含まれる中性子やLSIを構成する素材に含まれる微量の放射性同位元素の崩壊によるアルファ線などが半導体に当たると、電離を起こし大量の電子と正孔のペアができる。電子は正の電位のノードにひきつけられ、正孔は負のノードにひきつけられ、結果として、正の電位のノードの電圧が下がり、負のノードの電圧が上がることになる。この放射線起因のノイズ電圧が一定の値より大きいとSRAMのセルやラッチに記憶されている情報が反転してエラーを起こしてしまう。しかし、このエラーは一過性で、素子が破壊される訳ではないので、ソフトエラーと呼ばれる。

大規模プロセサでは、使用するラッチの数も多く、このような宇宙線起因のエラーの確率が無視できない程度になっており、キャッシュSRAMのECC保護は常識で、Montecito世代からItaniumではレジスタファイルにもECCをつけている。

SRAMやレジスタファイルはビット数が多いので、ECCによる保護のオーバヘッドがあまり問題にならないが、小さなレジスタなどでは、ECCのための回路のオーバヘッドが大きいし、チェックビットの生成や訂正に必要な時間が許容できない場合も多い。このため、Tukwilaでは、このようなケースにはソフトエラー耐性の高いラッチを使っている。

Tukwilaの耐SERラッチ回路

通常のラッチは2個のインバータをループに接続して構成するが、Tukwilaの耐SERラッチは、この図のように4個のP-TrとN-Trペアを用いて、クロスの接続を行っている。この回路で、CLKがHighとなると、左側の回路により、Dinが"0"の場合、ノードAは"1"になる。そうすると、4段目のペアのN-TrがノードDを"0"にプルダウンし、これが1段目のP-TrをオンさせてノードAの"1"をキープする。一方、P、N-Trペアのトランスミッションゲートを通して、ノードBはDinになる。そして、Dinが"0"の場合は3段目のP-TrがオンとなりノードCが"1"にプルアップされる。結果として、ノードAは"1"、ノードBは"0"、ノードCは"1"、ノードDは"0"となり矛盾の無い状態となり、CLKがLowになってもこの状態が保持される。

この状態で、"1"状態のノードAが放射線ヒットで発生したノイズ電圧で"0"方向に変化したとすると、2段目のP-Trがある程度オンとなり、ノードBをプルアップしようとするが、N-Trは"1"状態のノードCで駆動されており、両者のトランジスタの力比べの状態となる。この状態ではBの電位は若干上昇するが、ノードBの電位が上昇してもノードCの電位は下がらないので、ノイズ電圧が無くなると、2段目のN-TrがノードBをプルダウンする効果が勝って、元の状態に復帰する。また、ノードBの電位の上昇により、1段目のN-Trがある程度オンしてノードAの電位を更に引き下げようとするが、P-TrはノードDで駆動されており、ノイズ電圧が無くなると、P-Trが勝って、元の状態に戻る。このように、A~Dの4つのノードで二重に状態を保持することにより、ソフトエラーが発生してもラッチとしてはエラーが起こらない回路となっている。説明は省くが、その他のノードにノイズ電圧が注入された場合や、Dinが"1"の場合も、ほぼ同様に動作する。

但し、ノイズ電圧がノードAとC、あるいはノードBとDのペアに同時に乗ると、エラーが発生する。このため、これらのペアのノードをチップ上で1.1μm離して配置し、一発の放射線ヒットで両方のノードに電荷が注入される確率を小さくしている。しかし、高エネルギーの強力な中性子が当たると、大量の電荷が発生し、ペアの両方のノードにノイズが乗り、エラーになることは完全には避けられない。結果として、この耐SERラッチのエラー率は通常ラッチの1/100、より小型の耐SERレジスタファイルセルの場合は1/80とのことである。

この耐SERラッチは、通常のラッチと比較すると、面積では34%増、消費電力では25%程度増加するが、通過時間は若干改善し、セットアップ時間の増加は6%であり、クロック周波数に与える影響は小さいという。

Tukiwlaでは、大規模アレイであるキャッシュやアーキテクチャレジスタのECC保護に加えて、865Kbitのラッチと600Kbitのレジスタファイルに、この耐SERラッチを使用して信頼度を高めている。これも大規模な基幹サーバ用のプロセサとしての配慮であり、Xeon系のプロセサとの差別化項目である。