コンピュータは色々な計算を行いますがもう一つ重要な機能を持っています。それは情報を記憶することです。記憶の方法は何種類もありますがここでは最も基本的な方法であるフリップフロップを見てみます。
Set | Reset | Qa | Qb |
0 | 0 | 保持 | 保持 |
0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 |
1 | 1 | 禁止 | 禁止 |
フリップフロップはS(Set)、R(Reset)が入力でQが出力です。最初にSとRに0、1を入力した動きを追ってみます。
S = 0
NotA=1
R=1
NotB=0
NandAの入力a,bは以下になります。
NandAa=NotA=1
NandAb=NandB
NandAはNandAaが1なのでNandBが1の時に0になります。
NandBの入力a,bは以下になります。
NandBa=NandA
NandBb=NotB=0
NandBはNandBbが0なのでNandAに関わらず1になります。
Rが1のときはNotBが0なのでNandBが1となりNandAの入力が共に1になるのでQaが0となります。
逆のSとRに1、0を入力したときはNotAが0なのでNandAが1となりQaが1となります。
1を記憶したい時は1、0と入力し0を記憶したい時は0、1、読み出したい時は0、0になれば良く必要なビット数分並列にすればCPU内のレジスタを構成できます。このような記憶素子をSRAMと言います。