簡単にいうと…
フリップフロップ回路とは
1ビットの情報を一時的に0または1として保持する
技術要素です。
CPUのレジスタ(記憶回路)などに搭載されています。
詳しくいうと…
構造と仕組み
フリップフロップ回路の論理回路図の一例を下図に示します。
ここでの例では、OR回路とNOT回路が2列並び、さらに中央でクロスしてそれぞれの出力結果が他列の入力にもなっています。
入出力の「1」や「0」は、電流の「ON」「OFF」と読み替えてください。
それでは、このフリップフロップ回路の特徴(情報の保持)を理解するために、いくつかの入力ケースを見てゆきます。
ケース①: A=0,B=0
最初のケースは、A=0、B=0が入力された場合です。
このとき、OR回路は他方の入力値が不明のため、どんな値が出力されるのか不定です。
ケース②-1:A=1,B=0
では次のケースです。A=1、B=0が入力された場合を取り上げます。
OR回路は、ひとつでも1が入力されれば1を出力する回路なので、入力AはOR回路で1を出力し、その先のNOT回路で0へと反転されます。
入力BのOR回路では、今述べた出力値0が入力B=0とともに演算され、0が出力され、その先のNOT回路で1へと反転されます。
そのため、A=1、B=0が入力された場合、C=0、D=1が出力されました。
ケース②-2:A=0,B=0
さて、この状態から間を置かず、Aの入力値を0から1へ変えてみましょう。
入力AのOR回路は、先ほどの状態によってすでに入力値1が他列から与えられていました。そのため、出力値1に変わりなく、出力C、Dの値もそのまま変化なしです。
ケース③-1:A=0,B=1
次のケースを取り上げましょう。
A=0、B=1が入力された場合、先ほどの入力値A列とB列の説明とはちょうど逆の処理となり、出力値C=1、D=0が得られます。
ケース③-2:A=0,B=0
ここから間を置かず、入力値Bを1から0へと変えてみます。
やはり、先ほどと同様、前回の処理の値がB列のOR回路に入力済みなので、最終結果であるC、Dの出力値は変化なしです。
つまり?
これまで見てきたケースから、フリップフロップ回路が前回の出力値を保持しており、それにより次の入力値の出力結果に影響を与えていることがわかります。
これは2列のOR回路が並べられ、一方の出力が他方の入力となるよう配線されることで実現されています。
フリップフロップ回路のこの情報保持の特性は、CPUのレジスタやキャッシュなどの記憶回路に利用されています。
たとえば32bit用CPUでは、0/1の1ビット情報を保持するフリップフロップ回路が32個並べられ、232=32ビット=4バイトの情報量を一時的に保持できます。
2進数で表現するとこんな感じです↓
「1010101000010000111110010100000」
ただし、そうした直接的な情報はパソコン内のメモリやHDD/SSDに保存されています。ここで述べられているCPUレジスタの32bitとは、たとえばそれらメモリに一時的に保管されている情報1個1個のアドレスパス(情報の住所)の保持情報量を指します(アドレスレジスタの場合)。
ちなみに先ほどの4バイトは、10進数だと約40億まで表現できます。そんな40億のアドレスパスに1パス1バイト割り当ててメモリ内に住所録として記憶しようとすると、4GBのメモリが必要になります。逆に言うと、4GB以上のメモリ容量があってもCPUにとっては使いこなせません。40億の家しか覚えられないひとにそれ以上の数の家を分け与えるようなものです。
そのため、32bitCPU搭載のパソコンは、4GB以上のメモリを搭載してもあまり意味がありません。他方、64bitCPU搭載のパソコンなら16EB(エクサバイト)までのメモリをフル活用できます。
以上のようにフリップフロップ回路は、直前の状態を保持することで情報記憶が可能であり、その特性を利用してわたしたちのパソコンのCPU内レジスタで、日々あれこれのデータファイルやキャッシュの住所を指定したり、そのほか色んな処理の一時記憶役を果たしたりしているのでした。
さらに知りたいなら…
(←画像クリックでAmazonサイトへ)
こちらもイラスト豊富な解説書です。
ただし概要だけでなく、回路内部の演算処理についてもしっかり学びたいという方向けの1冊です。
つまり…
フリップフロップ回路とは
1ビットの情報を一時的に0または1として保持する
技術要素なわけです。
歴史のツボっぽくいうと…
- 1918年フリップフロップ回路の発明イギリスの物理学者フィリップ・エククレスとF.W.ジョーダンが、2つの真空管からなる最初のフリップフロップ回路を発明する
<参考文献>(2019/08/31 visited)