プログラムされた初期状態がない限り、それは多かれ少なかれランダムになります。ただし、これはSRAMの実装によって異なります。「空白」とも言います。ランダムはすべて0よりも「ブランカー」であると考える人もいるかもしれません。
SRAMメモリは、メモリをバックツーバックインバータに保存します。
これにより、双安定システムが形成されます(準安定状態の2つの非常に安定した状態)。そのため、電源を入れると、バックツーバックインバーターは一時的に準安定状態になります。
これは、電圧が(オンから)ランプアップすると、バックツーバックインバーターのNMOSとPMOSの両方が「等しく」オンになり、両方のビットノードを電源電圧の半分に保持するためです(これは準安定状態です)。最終的に、いくらかの熱ノイズ(または変動を引き起こすプロセス)が、この値を少しだけ上下させます。この時点で、ビットノードは双安定状態の1つにスナップします。
- 例として、Q = Q′= Vs u p p l y2
- 次に、Qの熱ノイズにより、電圧がV s u p p l yまで増加しますVs u p p l y2+ δ
- ここで、Q 'を供給するNMOSがもう少しオンになります。そして、Q 'を供給するPMOSがもう少しオフになります。したがって、Q 'はからプルダウンしますVs u p p l y2Vs u p p l y2- δ
- 次に、FETの駆動Qノードのゲートの電圧が低下するため、PMOSが少しオンになります(そして、NMOSはさらにオフになります)。これにより、Qは供給に対してさらに増加します。これにより、Q 'が0に、Qが1にすばやくスナップされます。
実際、「指紋と真の乱数のソースを特定するパワーアップSRAM状態」という論文もあります。
論文に含まれる非常に役立つプロットを以下に示します。点線はランプアップする電源電圧を表します。
- 左側では、すべてが同じです。この場合、温度または別の数の要因によるランダムな変動により、ビットノードが1つの状態または他の状態になります。
- 右側には、特定の状態で初期化される可能性がはるかに高くなるように(意図的またはその他の理由で)スキューされたビットノードがあります。
現在使用しているSRAMの各ビットノードがどのように製造されたかによって、上記の2つの状況のいずれかが多かれ少なかれ発生します。どちらの場合も、SRAMを意図的に歪めない限り、初期出力は多少ランダムに見えます。左側の状況では、その後の各電源投入により、よりランダムなパターンが生成されます。右側の状況では、最初の起動は一見ランダムになります。しかし、さらに電源を入れると、SRAMは特定の状態をさらに進める傾向があります。