2009/10/25
論理回路の仕組み
コンピュータが処理を素早くこなす仕組みを紹介しましょう。 コンピュータが情報を処理するとき基本となるのが、論理回路です。 論理回路は、「AND」、「OR」、「NOT」のような基本的な論理演算を行う回路です。 論理回路の多くは半導体を使って作られていますが、ここでは一番簡単なダイオードとトランジスタを使います。 コンピュータを構成しているCPUやメモリ、そのほかの集積回路と呼ばれる部品の多くは、 ここで紹介する論理回路が山のように組み込まれたものなのです。 ダイオードは、一方向にだけ電流が流れるようにした半導体で、ダイオード記号の黒三角形の方向が流れる電流の方向です。 Aを陽極(アノード)、Kを陰極(カソード)と呼び、 A側がプラス、K側がマイナスのとき、AからBに向かって電流が流れます。 反対に、A側をマイナス、K側をプラスにしたときにも弱い電流がKからAの方向に流れるのですが、 その電流はとても弱いので部品としては、一方向にだけ電流を流す半導体と考えることができます。 ダイオードには足が二本しかありません。 しかし、集積回路でよく使われるトランジスタにはもう一つ足があります。 それぞれの足を、エミッタ(E)、ベース(B)、コレクタ(C)と呼んでいます。 トランジスタの記号の黒矢印の端子がエミッタを表します。 EをマイナスにしてCをプラスにすると、Bに電圧がかかっていないときには電流が流れませんが、 プラスの電圧をかけるとCからEに電流が流れます。 トランジスタを使うと、ベースBの電圧によってコレクタCからエミッタEへの電流を流したり止めたりできます。 つまり、電流のON、OFFをトランジスタを使うことで実現させるのです。ちょっとわかりにくいかも知れませんが、 ベース、コレクタ、エミッタと電気の流れを示しておきましょう。 -C ←E | | →B | B-| →E -C 電池と電球で、直列と並列回路を作って、スイッチを入れたり切ったりすると、電球が点いたり消えたりしますが、 電気が点いた状態を「1」(オン)、消えた状態を「0」(オフ)と考え、この回路がほんの少し複雑になったもの、 と考えてもかまいません。 実際のコンピュータを構成している演算回路はAND、OR、NOTといった基本回路が複数組み合わせされています。 CPUの内部では、ALU(Arithmetic and Logic Unit)と呼ばれる部分で、算術論理演算装置と訳されています。 ALUが果たす役割は、四則演算(ベキ乗演算を含む)と論理演算を行うのですが、 算術演算を行う回路を算術演算装置、論理演算を行う回路を論理演算装置と呼ぶこともあります。 どちらも、CPUの中のCPUとでも呼ぶ重要な働きをする部分です。この演算装置以外にCPUを構成している装置には、 ・バスユニット ・プリフェッチ装置 ・デコード装置 ・制御装置 ・算術論理演算装置 ・メモリ管理装置 があります。情報の流れは、 ・バスユニット ・プリフェッチ装置 ・デコード装置 ・制御装置 ・算術論理演算装置 ・メモリ管理装置 ・バスユニット のようになりますが、算術論理演算装置を上手に利用するためにその他の装置はある、 と考えていいでしょう。ですから、このALUが本当の意味でコンピュータの頭脳の中枢ということになります。 多少強引ですが、 ・バスユニット→脳幹 ・プリフェッチ装置→小脳 ・デコード装置→小脳 ・制御装置→小脳 ・算術論理演算装置→大脳 ・メモリ管理装置→大脳記憶域 ということになります。 ●コンピュータを流れる信号 実際にコンピュータの中で、どのように数字や文字が扱われているのかを説明しましょう。 8ビットで処理するとき、00000000~11111111までで256種の区別ができます。 では、大きな数値を扱うときはどうするのだ、という疑問が湧いてくるでしょう。 整数値を二進数で表現するときには、小数点が整数値を表す、二進数の最後のビットの右側にあると考えます。 このように、ある数を示す二進数表現の最後のビットの右側に小数点をいつも決めて表す方式を、 小数点の位置がいつも決まっていることから、固定小数点表示といいます。 固定小数点数は、小数点以下がいつも0ですから整数値ということになります。 それでは、小数点以下にも値がある実数値を二進数で表現するにはどうすればよいのでしょう。 小数点以下に値がある数値を2進数で表現するのは、実は大変やっかいなのです。 例えば0.1を二進数で表現しようとすると、正確に表すことができないのです。 この問題を解決するための仕掛けが、指数表現です。 0.1は、1×10^-1と表現します。0.001は1×10^-3ですね。 このようにすると、10のべき乗の数値を調整して同じ数値を表すことができるようになります。 このこの表示方法を小数点の位置が移動することから、浮動小数点表示と呼びます。 指数表現で0.001を1×10^-3と表現したとき、 1を仮数と呼び、10のべき乗の値の3を指数と呼びます。 これは10進数の世界ですが、同じように、二進数でも浮動小数点表示を利用して処理を行うのです。 -------------------------------- 仮数 指数 2のべき乗 2進数表示 1000000000000.0 0 00000000 100000000000.00 1 00000001 10000000000.000 2 00000010 1000000000.0000 3 00000011 100000000.00000 4 00000100 10000000.000000 5 00000101 1000000.0000000 6 00000110 100000.00000000 7 00000111 10000.000000000 8 00001000 1000.0000000000 9 00001001 100.00000000000 10 00001010 10.000000000000 11 00001011 1.0000000000000 12 00001100 0.10000000000000 13 00001101 0.010000000000000 14 00001110 -------------------------------- このように、私たちの普段使っている実数をコンピュータ内部では浮動小数点数形式を使って表現しているのですが、 コンピュータでの浮動小数点数は、私たちが使っている実数とはちょっと違っている点があります。 浮動小数点表示の仮数部は、二進数表示したときの小数点以下の各けたを表しています。 図に示すように、小数点以下1位は二分の一、第2位は四分の一、第3位は八分の一を表しているので、 十進数で書けばそれぞれ.5、.25、.125に対応それぞれ対応することになります。


