000000 ランダム
 HOME | DIARY | PROFILE 【お気に入りブログ登録】 【ログイン】

CPUを作ろう ~計算機教材とマイコンと電子工作~

序論

1. 序論

コンピュータは20世紀後半に発明された新しい道具である.その出現以来,まだ数十年しかたっていないが,今日多くの人々に何らかの形で恩恵を与えている.直接的にコンピュータを利用することもあれば,旅行の予約など,他者を介して間接的に利用することもある.既に,携帯電話や家電製品などに組み込まれ,無意識のうちにコンピュータを使っているのが現状である.電子情報通信関連の技術者は,コンピュータをただ道具として使うだけでなく,その仕組みや構造を理解すると共に使いこなし,また,今以上に発展させていかなければならない.そのためには,コンピュータの使用法を学ぶだけではなく,その構造についても知っておく必要がある.本章では,コンピュータの構造を理解するために必要最小限の論理回路についての基礎知識を学ぶ

1.1 アナログとデジタル

現在利用されているコンピュータはあらためて説明するまでもないが,電子機器であり電気エネルギーによって動作している.例えば,水圧,気圧,熱,光など他のエネルギー源によって動作するコンピュータが作れないとは限らないが,実際のところその利便性から電気的な回路によってコンピュータは作られている.つまりコンピュータとは,複雑な電子回路の一種と考えることができる.我々が普段扱っている情報は,通常電気的な情報ではない.むしろその方が稀である.コンピュータを使って情報を処理するということは,情報を電気的な信号にいったん置き換え,それをコンピュータによって処理させ,電気的に得られた結果を我々の利用でき形態の情報に再び変換するという過程を経ている.

我々の扱う情報の形態は,さまざまであるが,大別するとアナログとデジタル量とに分けられる.アナログとは,時間,電流,電圧,など連続的に変化する物理量を形容する言葉である.一方デジタルとは,離散的な物理量を形容する言葉である.例えば,時間は連続的に進んでいるがLEDや液晶を使って時間を離散的な数値表示する時計は一般にデジタル時計と呼ばれている.対して従来の短長針の動きで時間を表わす時計をアナログ時計などと呼ぶこともある.この例からも分かるように,取り扱う情報がアナログ量であってもある程度の誤差を許容すればデジタルに直して表現することできる.アナログ量を取り扱うアナログ計算機も特定用途で過去に使われることはあったが,現在流通しているすべてのコンピュータの内部では,このデジタル情報をもとに処理を行っている.
1.2 2進数による情報の表現

デジタル量として最も単純なものは,2値論理といわれるものである.これは例えば情報がない)か,ある)か,数値を当てはめれば“”か“”というように2通りの状態で情報を表すものである.これを電気信号に当てはめれば,”偽”と”真”の状態を例えば電圧の”0V”と”5V”にそれぞれ割り当てることができる.電圧は連続的な値であるが,ある境界(しきい値)を決めてそれより小さければ0V,大きければ5Vと決めれば電気的に2値論理を取り扱うことができる.この電圧値を何ボルトと数値で取り扱うのではなく,Lowレベル(または単にL),Highレベル(または単にH)と表すこともある.以上をまとめて図1.1に示す.例えば電気回路においてLowレベルまたはHighレベルという2値は電源と負荷を接続した回路でスイッチがOFFかONかという2状態で簡単に実現できる.このように電気的な回路でデジタル量簡単に表現できることが最大の利点であり,コンピュータがデジタル量をもとに処理を行っている理由である.

image101
図1.1 状態の割り当て


0と1だけで表現できる状態は2通りであるが,この情報を最小単位の1ビットとすれば,ビット数(桁数)を増やすことにより取り扱うことのできる情報量は増える.表1.1に示すように例えばn桁では2個の情報を取り扱うことができるようになる.

表1.1 ビット数と情報量
image102

我々は日常的に0から9までの数字を使って数値を表現しているが,これを10進法に基づいているのは周知のことだろう.同様に0と1だけを用いた2を基数とする表記法を2進法といい,2進法で表現された数値2進数と呼んでいる.コンピュータの内部では2進数で表された情報を処理しているが,大量の情報を扱おうとすると2進数では桁数が大きくなり人間が直接取り扱おうとすると間違いが起こりやすい.そこで便宜上2進数を16進数に直して取り扱うことがよくある.16進数とは16を基数とした表記であり,0から9までの数字に加えてアルファベットのAからFまで数字として用いて表記されている.表1.2に0から16までの10進数,2進数および16進数の対応を示す.

表1.2 10進数と2進数の対応

10進数

2進数

16進数

10

11

12

13

14

15

10

11

100

101

110

111

1000

1001

1010

1011

1100

1101

1110

1111

A

B

C

D

E

F

 

2進数と16進数の変換は非常に簡単である.2進数を4桁ごとに区切り,表1.2の通りに16進数を当てはめてゆけばよい.2進数から16進数への変換例を図1.2に示す.逆に16進数から2進数への変換は16進数の各桁を2進数に変換して並べればよい.

  image103
図1.2 2進数から16進数への変換

 

一方,2進数と10進数の変換は以下のようにできる.まず,2進数から10進数への変換については図1.3に示すように,2進数の各桁(n)が2nに相当するとしてそれらを合計すればよい.10進数から2進数への変換については図1.4に示すように,10進数の数値を2で割り,その余りを逆順に並べていけばよい.

  image104
図1.3 2進数から10進数への変換



2進数においても負の数を扱うことができる.10進数の場合,負号“-”を数値の前において負の数を表すが,2進数の場合は後に述べる減算時の利便性から10進数の場合とは異なり,2の補数表現を用いている.2の補数表現とは,各ビットの数値を0ならば1,1ならば0というように反転し,得られた結果に1を加えた値を使って負を表現するものである.例えば4桁の2進数を使って-5を表現する場合,5を表す“0101”を反転して“1010”とし,これに1を加えた“1011”が2の補数表現による-5となる.ただし,2の補数表現による負の数を取り扱うときには次のような注意が必要である.10進数の11を2進数で表せば“1011”となり,-5を2の補数表現したものと同じ表記となるが両者を混同してはならない.負の数を含めて2進数で表す時,4ビットの2進数で表現できるのは10進数で-8から7までである.

  image105
図1.4 10進数から2進数への変換


1.3 2進数による演算

数値の表記に2進数を用いても加減乗除などの数値演算を行うことができる.図1.5は2進数における加算の例である.加算の場合,10進数の加算と同様に各桁を足していく.ただしこの場合,“1+1”は“2”とはならず“10”となり,桁上がりが生じる.

  image106
図1.5 加算の例



図1.6は2進数における減算の例である.コンピュータにおいて実際には2の補数表現による負数を加算することにより減算結果を得ている.図に示すように,加算後の桁上がりを無視したものが減算の結果に相当する.

  image107
図1.6 減算の例

  乗除算についても,図1.7及び図1.8にそれぞれ示す.2進数の乗算は,10進数の乗算を筆算で行う場合と同様に行えばよいが,2進数の場合は数値が0と1しかないので,乗数の0と1に対応して桁を左にずらしながら(左シフト)被乗数を並べ,その結果を足し合わせればよい.このように乗算は加算の繰り返しで実現できる. 2進数の除算についても,10進数の除算の筆算で行う場合と同様にシフト動作と減算の繰り返しによって行えばよい.ただし2進数の減算は2の補数表現による加算を用いることから実際には加え戻し法(復元法),または引きはなし法(非復元法)と呼ばれるより複雑な計算手法を用いなければならない.

image108
図1.7 乗算の例


image109
図1.8 除算の例



1.4 論理回路とは

これまで述べてきた2進数の演算は,コンピュータ内部ではデジタル回路の組み合わせにより実現される.デジタル回路は1(真)または0(偽)という論理値をもとに演算を行うことから,論理回路とも呼ばれている.論理回路は次の2種類に大別される.

(1)組合せ回路

出力は入力の組み合わせによって完全に定義され,それが加えられた順序には関係しないもの.

(2)順序回路

論理回路の出力がその時の入力のみでなく,回路の状態(履歴)によって決まるもの.
論理回路としては組合せ回路よりも順序回路の方が一般に複雑で,順序回路を構成する一要素として組合せ回路が用いられている.


Copyright (c) 1997-2018 Rakuten, Inc. All Rights Reserved.