    
       
      2.記憶回路 
       (きおく かいろ) 
      
       
      
      
      
       
      2.1 シーソーみたいなスイッチ(フリップフロップ) 
      
       
       
       
      正スイッチや逆スイッチは、電流を流さないと元に戻ってしまいました。 
       
      ところが、次のようなスイッチがあります。 
       
      
      
               図2-1 フリップフロップの原理 
       
       
      すなわち、 
       
      A側に電流が流れると、スイッチはA側に引き寄せられ、 
       
      RP間がオンになります。 
       
       
      B側に電流が流れると、スイッチはB側に引き寄せられ、 
       
      RQ間がオンになります。 
       
       
      どちらにも電流が流れないと止まったままになっています。 
       
      電流が流れ出すと,シーソーみたいにパタパタ動きます。 
       
       
      このため、このスイッチは、シーソーという意味の英語 
       
       
            「フリップフロップ」 
       
       
      と呼ばれます。 
       
       
      フリップフロップは、A,Bともに電流が流れないと、止まったままです。 
       
       
      今、Q側には何もつながず、P側に豆電球をつないでいます。 
       
      最初、A、B共にオフだとします。 
       
      スイッチはPかQのどちらかにありますが、 
       
      Aのスイッチをオンにすると、P側にスイッチが傾きますので、 
       
      確実に豆電球が点灯します。 
            
           @) A側に電流が流れると,スイッチはP側に引き寄せられ,豆電球がつく。 
           A) B側に電流が流れると,スイッチはQ側に引き寄せられ,豆電球が消える。 
      
      
               図2-2 フリップフロップによる記憶 
       
       
      電流が流れないと、止まったままですから、 
       
      スイッチAをオフにしても豆電球はついたままです。
       
       
       
      今度は、Bのスイッチをオンにします。すると、スイッチがQ側に傾きます。 
       
      Qは豆電球とつながっていませんので消えてしまいます。 
       
      Bのスイッチをオフにしても消えたままです。 
       
       
      電流が流れている状態を1、流れていない状態を0としていますから、 
       
      Aのスイッチは1を記憶させ、Bのスイッチは0を記憶させることになります。 
       
          
      
       
      
       
       
      図2-2でA、B両方ともスイッチをいれたら? 
       
      両方から引き寄せられて中途半端になってしまします。 
       
       
      記憶で必要なことは、 
       
       
        @) 0を書き込む 
        A) 1を書き込む 
        B) 書み込みしない 
       
       
      の3通りですから、もっとも単純には3つの端子をもつスイッチを使います。 
       
            
               図2-3 フリップフロップによる記憶 
       
       
      図2-3で、スイッチがまん中にあったら、 
       
      どちらの電磁石にも電流は流れません。 
       
      ですから書き込まれません。 
       
       
      スイッチがA側に倒れたら、P側の電磁石に電流が流れ、 
       
      1を書き込むことになります。 
       
       
      スイッチがB側に倒れたらQ側の電磁石に電流が流れ、 
       
      0を書き込んだことになります。 
       
         
 
       
      
       
       
      前に述べたように、3つに分ける方法もありますが、 
       
      今までの話では、スイッチは必ず0か1でした。 
       
       
      すなわち2通りで済ませてきたのですが、 
       
      ここだけ3通りでは、話が複雑になってしまいます。 
       
       
      そこで、書き込むか書き込まないかを、別スイッチにすることにします。 
       
      そうすると、書き込むか書き込まないかで2通り。 
       
      書き込むときには、0を書きこむか、1を書きこむかの、2通りとします。 
       
       
      すなわち,1ビットメモリの考え方を 
       
      図2-4のように,フリップフロップで表現してみます。 
        
                   図2-4 スイッチを分けた書込み 
       
       
      図2-4は、ちょっと複雑に見えるかもしれませんが、 
       
      スイッチDで書き込む値を指定して、 
       
      スイッチCをオンにすると書き込まれます。 
       
      スイッチCをオフにすると、スイッチDをオンにしてもしなくても動きません。 
       
      
       [この動きを詳しく知りたい方は,こちらから]
       
       
      すなわち、スイッチDは書き込むデータ、 
       
      スイッチCは,書き込むかどうかを示すスイッチとなります。 
       
      [この動きを詳細に知りたい方は,こちらから] 
       
      図2-4は,複雑ですので, 
       
      例によって、単純化した記号を使うことにします。 
       
       
      電源を省略し、入力と出力の2本線をひとつにします。 
       
      図2-4の点線枠内をひとつの箱(1ビット記憶)で示し、 
       
      D、C、R端子を記号で指定します。 
       
       
      ここで,D端子を「書込みデータ端子」、C端子を「書込み制御端子」、 
       
      R端子を「読込みデータ端子」等と呼ぶことにしましょう。 
       
      
      
             図2-4 記憶回路の単純化表現 
       
         
 
       
      
       
       
      今、2個のビット記憶があります。 
       
       
      データをどちらに書き込むかを指定するには、 
       
      書き込むビット記憶のC端子をオン(1)にし、 
       
      そうでないビット記憶のC端子をオフ(0)にすれば、 
       
      区別することができます。 
      
      
              図2-5 2個のビット記憶の書込み 
       
       
      ビット記憶を4個にしてみましょう。 
       
      4個のどれかを指定するには、Aのスイッチを増やして、 
       
      4種類を指定するようにします。 
       
       
      4種類を指定するには、2個のスイッチを使います。 
       
      
      
                   図2-6 4種類分離 
       
       
      図2-6と4個のビット記憶を組み合わせると、 
       
      4個のビット記憶の中からひとつを選んで書き込むことができます。 
       
                 
               図2-7 ビット記憶4個のどれかに記憶 
       
       
      A0とA1で4個のビット記憶どれかを選択していることになりますから、 
       
      4個のビット記憶に対して、 
       
      番地(アドレス)付けを行っていることになりますから、 
       
      A0, A1をアドレスと呼びます(この場合は2ビットアドレス)。 
       
       
      図2-6は、アドレスから書込み制御信号を生成していることになります。
       
       
      更に、書込みを番地(A0, A1)と 
       
      書き込むデータ(In)の組で表現できたことにもなります。 
       
       
      同様に、図2-6の回路を使って、 
       
      ビット記憶のR端子からのデータも番地と値の組で表現できます。 
       
       
             
            図2-8 読込みデータ端子からのデータ取出し 
       
       
      図2-8のC0〜C3では、いずれかが1、その他は0になっています。 
       
      ですから1とAND演算したビット記憶だけのデータだけが有効となり、 
       
      その他はすべて0となります。 
       
       
      これらを、すべてOR演算するとA0、A1で指定されたビット記憶の 
       
      RがOut信号となります。 
       
       
      さて、4個以上になったらどうなるのでしょうか。 
       
      一例として16個の場合を示してみよう。 
       
      16個の場合、2×2×2×2=16ですから、 
       
      図2-9のように、4ビットのアドレス(A0,
      A1,A2,A3)を使います。 
       
       
      このように、アドレスから書込み制御端子用の信号に変換する場合は、 
       
      AND素子とNot素子を配列状に並べた形になります。 
       
       
      この出力C0〜CFを、 
       
      図2-7と同じように16個のビット記憶の書込み制御端子に連結します。 
       
       
      更に、図2-8と同じようにAND素子、OR素子と連結することによって、 
       
      アドレス線によるビット記憶の参照ができます。 
       
                
            図2-9 ビット記憶16個のアドレス(4ビットアドレス) 
       
          
      
       
      
       
       
      図2-6、図2-7のように1個1個の素子を描いていると大変です。 
       
      そこで、更に単純化した図を使います。 
       
      書込み用のアドレス線、読込み用のアドレス線、 
       
      書込み用のデータ線(In)、読込み用のデータ線(Out)を除く部分を 
       
      ひとつのボックスで示します。 
       
      以下、これをアドレスつきビット記憶と呼ぶことにします。 
       
           
       
         図2-10 記憶回路の簡略化(ビット記憶4ビットアドレスの場合) 
       
      コンピュータでは、 
       
      1ビットではなく8ビット(1バイト)などの単位で扱いますので、 
       
      図2-10のような簡略化図で描くと、 
       
      図2-11のようにまとめて取り扱われます。 
       
      アドレスも16ビット、32ビットと長くなります。
       
       
       
             
                図2-11 バイト記憶4ビットアドレス 
       
         
 
       
      
       
       
      図2-12のように、 
       
      アドレスつきビット記憶MのOut、 
       
      最も単純なビット記憶Xのデータ端子を連結し、 
       
      XのC端子にタイミングスイッチをつけてみよう。 
       
        @) まず、タイミングスイッチをオフ(0)としておく。 
        A) 読込みアドレスを設定する。 
        B) タイミングスイッチをオン(1)にする。 
           タイミングスイッチをオンにすると、 
           Mの該当するアドレスのデータが、Xに移動することになる。 
       
               
       
                  図2-12 記憶の移動その1 
       
      逆に、図2-13(a)のようにアドレ付きビット記憶に、 
       
      タイミングスイッチを用意します。 
       
       
      単純なビット記憶のR端子と、 
       
      拡張されたアドレスつきビット記憶MのInをつなぎ、 
       
      タイミングスイッチを用意します。 
       
       
      書込みアドレス線にアドレスをセットして、 
       
      タイミングスイッチをオンにすると、 
       
      R端子からデータが移動することになります。 
       
              
               (a) アドレスつきビット記憶の拡張  
       
               
              (b) 単純ビット記憶からアドレスつきビット記憶への移動 
       
                   図2-13 記憶の移動その2 
       
       
      以上は、メインメモリとCPU内のレジスタとの転送の原理です。 
       
      すなわち、アドレスに値を設定して、専用のスイッチをオンにすることで、 
       
      メインメモリとレジスタの転送がなされるわけです。 
       
         
       
      
       
      
       
       |