コンピュータの基礎1 論理演算

名古屋工業大学
先進セラミックス研究センター
井田 隆

名古屋工業大学 環境材料工学科 3 年次授業「マテリアルデザイン」第1回授業の講義ノートです。


材料設計 materials design の本来の意味は,どのような材料を組み合わせるか,どのようなプロセス(温度や時間,混合のしかた,撹拌かくはんのしかた)で目的の材料を作製するか,材料をつくるための原料をどのように配合するか計画することです。目的の性能,あるいは目的の品質の材料を作るために,なるべく安い原料,設備,エネルギーで短期間に大量の製品を生産することが目標になります。

材料設計は,経済合理性とも省エネルギー,環境負荷の軽減とも直結しています。最近では,材料設計の段階で,既に将来製品を廃棄するためのコストが意識されるようになっています。しかし,材料設計の具体的な方法は,対象となる製品,社会状況や経済状況によっても変わるでしょうから,大学での授業としてふさわしい内容にすることは困難です。

この講義ではコンピュータを使った材料設計,いわゆるコンピュータシミュレーション(模擬実験)に内容を限定します。本当の実験の一部でもシミュレーションで代用することができれば,コストが安くついて,エネルギーの節約になり,安全性を確保あるいは危険性を回避する事ができて,廃棄物の心配もしなくて済みます。

この授業では材料設計のためにコンピュータ computer を利用する技術を学びます。はじめの4回の授業ではコンピュータの基礎(論理演算,記憶,算術演算,数値計算)について勉強します(理系の大学生なら最低限知っておいてほしいレベルのことです)。それ以降はコンピュータを利用した材料(物質)シミュレーションを利用するために必要になる基礎的なことがらを勉強します。市販の分子動力学計算ソフトウェアを使うことができるような知識(何が計算できるのか,どう解釈したら良いか),あるいは(自分が直接使わないとしても)使うことに価値があるかを判断できるような知識,結果の妥当性を判断できる知識を身につけることを目標とします。現時点では分子動力学シミュレーションのソフトウェアは高価なものですが,無料で公開されているソフトウェアもあり,これからは市販のソフトウェアがさらに普及し,無料ソフトウェアもより使いやすいものになることが予想されます。

この授業は環境材料工学科の学生を主な対象としています。コンピュータや情報,通信,電気,電子回路技術などが苦手な人も少なくないかもしれませんが,「無理をしてでも」コンピュータの勉強をしておくことをおすすめします。コンピュータや情報通信技術,計算技術は急速に発展していますし,将来さらに重要になることが予測されます。どうせいつか勉強しなければいけないのですから,若いうちから勉強を始めた方が有利です。大学の学部3年は,そのような勉強をはじめるのに適した学年です。


第1部 コンピュータの基礎
Fundamentals about computer

第1章 コンピュータの基礎1 −論理演算−
Logical operations

1−1 記号論理とブール代数
Symbolic logic and Boolean algebra

現在市販されているコンピュータの主要な部分はディジタル回路で作られています。「ディジタル信号処理」と「論理演算」とは「まったく同じ」という訳ではないのですが,コンピュータの情報処理が「論理演算」に基づいているとすれば考えやすくなります。 現在使われている論理演算の体系は G. Boole という数学者がまとめたものに基づいており,ブール演算とも呼ばれます。

ブール演算は,加減乗除の四則演算に比べればずっと簡単です。 まず,扱う数は 0 と 1 の2種類しかありません。この2つの値が論理値であり,それぞれ「偽」= “false” = 0, 「真」= “true” = 1 と名前を付けて呼ばれます。ただし 必ずしも普通の意味で「真偽」を表している訳ではありません。 0 や 1 という数を,普通と少し違う意味で使うので,紛らわしくならないように別の名前で呼ぶようにしていると考えれば良いでしょう。

記号論理あるいは論理代数には,「論理を数学的に表現するための方法」という面もあるのですが,普通の代数学で「いろいろな値をとりうる数のようなもの」を x という文字で表すのと同じように,0 か 1 の論理値をとりうる変数を xA などの文字(論理変数)を使って表すだけのことです。

ディジタル回路では,回路上の特定の場所の電圧や,特定の導線を流れる電流,特定のキャパシタに蓄えられる電荷などが「0 とみなせる場合」と「0 以外とみなせる場合」の 2 種類あり,この二つの状態が頻繁に入れ替わります。ディジタル回路を使って論理演算をする場合に,論理変数は抽象的な概念というより,むしろ回路上の接点や導線,キャパシタなど「目に見えて実在するもの」に対応します。

ブール代数で使われる演算は NOTノット 演算,ANDアンド 演算,ORオア 演算の3種類だけです。そして,それぞれ以下の規則に従います。

(1) NOTノット 演算( X )の規則

0 = 1
 

1 = 0
 

(2) ANDアンド 演算( AB )の規則

0 ∧ 0 = 0
 

0 ∧ 1 = 0
 

1 ∧ 0 = 0
 

1 ∧ 1 = 1
 

(3) ORオア 演算( AB )の規則

0 ∨ 0 = 0
 

0 ∨ 1 = 1
 

1 ∨ 0 = 1
 

1 ∨ 1 = 1
 

X, A ∧ B, A ∨ B という演算は,上の規則以外は +, −, ×, ÷ などの演算とまったく同じように扱えます。これらの演算を「論理演算」といいます。

「NOT 演算」X は「否定」あるいは「反転 inversion」とも呼ばれます。

「AND 演算」A ∧ B は,0 と 1 の値にしか使わないことを除けば「かけ算」A × B とまったく同じことです。AND 演算の規則が,「0 ×0 = 0」,「0 ×1 = 0」,「1 ×0 = 0」,「1 × 1 = 1」という関係にそのまま対応していることを確認してください。AND 演算のこと,あるいは AND 演算の結果のことを,論理的なかけ算という意味で「論理積」という言葉で表します。

「OR 演算」 は,「たし算」A + B と似ています。1 + 1 = 2 に対して 1 ∨ 1 = 1 というところが違っていますが,論理的な足し算という意味で「論理和」という言葉が使われます。

任意の論理値(つまり 0 か 1 の値)を取る変数を論理変数と呼びます。たとえば,「今日が休講だということが正しいか」を A という記号で表して,「正しい」ということを「A は 1 という値を取る」と言い換えて,「正しくない」ということを 「A は 0 という値を取る」言い換えることにします。

つまり,今日が休講なら A = 1,休講でなければ A = 0 と書くことができます。また,「今日は休講だ」という記述を否定すれば「今日は休講でない」ということになりますから,「今日は休講でないということが正しいか」が A と表されます。

今度は,「来週は試験だということが正しいか」を B という記号で表せば,「今日は休講でなおかつ来週は試験だということが正しいか」が A ∧ B と表され,また,「今日が休講であるか来週が試験であるかのどちらかだということが正しいか」が A ∨ B と表されることになります。

簡単なことをわざと難しくしているように思えるかもしれませんが,実際に使う論理演算は,(論理と言う名前はついていますが)必ずしも普通の意味での「論理」と対応づけられなければいけないという必然性はありません。

現実的な問題として,電気回路を使って情報を伝える場合に,電圧や電流を微妙にコントロールして行うような回路(アナログ回路)を作るのは難しいけれど,スイッチの on/off あるいはトランジスタの on/off (低抵抗状態と高抵抗状態)で行う回路(ディジタル回路)を作るのは簡単で確実だという面があります。

必要なことは,普通の計算( +, −, ×, ÷ などの)の規則ではなく,「論理演算の規則」に従うということです。もし頭が混乱してきたら,論理演算の規則に戻って考えるようにしてください。


1−2 ド・モルガンの法則
De Morgan's law

法則というほどおおげさなことではないのですが,

AB = AB
 

AB = AB
 

という二つの関係のことをド・モルガンの法則と言います。「論理積の否定は否定の論理和と等しく,論理和の否定は否定の論理積に等しい」という関係です。

前節の「論理演算の規則」 から簡単に導くことができますが,実際に論理演算の中で良く出てくるのでド・モルガンの法則と呼んで使うことにします。

ド・モルガンの法則から,以下の関係も導かれます。

A ∧ B =  A ∨B
 

A ∨ B =  A ∧B
 

規則から

0  = 0

1  = 1

だから,一般的に

X  = X

と書けることを確認しておいてください。

この法則に何か意味を持たせたければ,たとえば次のような記述を想像してみたら良いでしょう。「Q 君がタワケでもないしアホでもないということはない」この記述は,「Q 君はタワケであるかアホであるかのどちらかである」と同じことを言おうとしています。 「A ならば B」という命題(論理包含)が否定と論理和の組み合わせ「(A でない) または B」と等価だということも理解しにくいことですが,上の記述が「Q 君はタワケでなければアホである」と言い換えられることに対応します。

さて,どうして当たり前のことにわざわざ「ド・モルガンの法則」と名前を付けて呼ぶことが多いのでしょうか?

これはコンピュータや周辺回路をデザインしたり作る人にとって,(あたりまえなことだとしても)この言葉の示す内容が非常に便利で役に立ち,頻繁に用いられるからです。現実の論理演算は電子回路を使って実現されています。ド・モルガンの法則の意味する内容を利用すれば,必要な機能を実現するための素子の種類や数,配線の本数を減らすことができて,回路の動作を速くしたり,製造コストを下げたり,信頼性を向上させたり,資源やエネルギーの消費を抑えられるからなのです。


1−3 電子回路による論理演算
Logical operation with electronic circuits

この節では,電子回路によって論理演算を実現するための具体的な方法について説明します。

論理演算には NOT と AND,OR の三種類がありますが,ド・モルガンの法則を使えば,すべての論理演算を NOT 演算と AND 演算だけの二種類の組み合わせ,あるいは NOT 演算と OR 演算だけの二種類の組み合わせでも表現できることがわかります。

ところが,実際には NANDナンド 演算 = NOT (A AND B) = A ∧ B という演算や NORノア 演算 = NOT (A OR B) = A ∨ Bという演算をする回路が素子として良く使われます。この節でも,はじめに NOT 演算を実現する回路,つぎに NAND 演算を実現する回路について説明します。

論理値 1 を +5 V,論理値 0 を 0 V という電圧で表現することにします。この +5 V という電圧を選んだのは,トランジスタを使う時にはこのくらいの電圧を選んでおくのが都合が良いからで,実際に少し前までは多くの論理回路に +5 V という電圧が使われていました。ただし,最近のコンピュータでは発熱を抑えるために +3.3 V とか +3 V という値が使われるようになってきています。

1−3−1 否定回路
NOT circuit

NOT 演算を電子回路で実現するためには,「入力が 0 V なら +5 V を出力し,入力が +5 V なら 0 V を出力する」回路を作ればよいことになります。そのような回路のことを NOTノット 回路と呼びます。NOT 回路を作る方法は一通りではなく,いろいろな作り方があります。例えばリレー(電磁石でスイッチを開閉する素子)や真空管,トランジスタと抵抗器の組み合わせでも NOT 回路を作ることができます。しかし実際に VLSI (超大規模集積回路,very large-scale integration, 数十万個以上の素子が搭載されている IC チップ)で使われている NOT 回路では CMOSシーモス という素子が使われていて,記号で表現すると,図 1.1 のようになります。

P-channel MOS-FET N-channel MOS-FET +5 V 0 V 出力電圧 5 V (または 0 V) 入力電圧 0 V (または 5 V)
図 1.1
CMOS による NOT 回路

図 1.1 の中で, +5 V の記号は,「+5 V の電源」のプラス側の端子に接続することを表しています。また, 0 V の記号はアース(地球)earth あるいはグランド(地面)ground と呼ばれ,実際には「+5 V の電源」のマイナス側の端子に接続します。 図 1.1 中で, の記号と の記号とは MOS-FETモスフェット (金属酸化物半導体電界効果型トランジスタ metal-oxide-semiconductor field-effect transistor) を表しています(図 1.2)。

S (ソス) D (ドレイン) G (ート) P-channel MOS-FET N-channel MOS-FET D G S
図 1.2
MOS-FET の回路記号

MOS-FET には「 P - チャンネル」と「 N -チャンネル」の2種類があり,それぞれ PMOSピーモス, NMOSエヌモス と呼ばれます。一つの基板上に両方のタイプのトランジスタを作り込んで組み合わせて使うものを相補型金属酸化物半導体 CMOS (complementary MOS) と呼びます。実際の MOS-FET の構造は図 1.3 のようになっています。

P 型 Si N 型 P P ート電極 ドレイン電極 ス電極 P 型 Si N N ート電極 ス電極 ドレイン電極 P-channel MOS-FET N-channel MOS-FET SiO 2 SiO 2 SiO 2 SiO 2
図 1.3
MOS-FET の構造。P 型 Si 基板上に作製される場合。

MOS-FET は金属電極と半導体基板の間を薄い酸化物層で遮った構造を持ちます。FETエフイーティー から出ている3本の線にはそれぞれ名前がついていて, Sourceソース (水源),drainドレイン (排水管),gateゲート (水門)と呼ばれます。 FET は,ソースからドレインへの荷電担体(carrierキャリヤ)の移動を,ゲートにかける電圧で on/off する「スイッチ」の働きをもっています。PMOS では荷電担体が正孔なのでソースからドレインに向かって電流が流れますが,NMOS では負電荷を持つ電子が荷電担体なのでドレインからソースに向かって電流が流れます(電子はソースからドレインに流れます)。

図 1.1 の NOT 回路では入力電圧が 0 V のときPMOS が ON,NMOS が OFF になるので出力電圧は +5 V となります。また,入力電圧が +5 V のとき PMOS は OFF,NMOS が ON になるので出力電圧は 0 V となります。

FET のはたらきは,図 1.4 のようにスイッチに置き換えて考えれば理解しやすいでしょう。たとえば,入力電圧が 0 V のとき,PMOS のソースとゲートの間に電圧がかかりますから,PMOS のソースからドレインへと電流が流れることができるようになりますが,NMOS のゲートとソースの間には電圧がかからないので,NMOS のドレインからソースへは電流が流れられません。このとき出力端子から見ると 5 V 端子との間のスイッチが閉じて,0 V 端子との間のスイッチが開くのと同じことになるので出力が 5 V となります。入力電圧が 5 V のときには逆に PMOS が絶縁,NMOS が導通状態になるので,出力側から見ると 5 V との間に挿入されているスイッチが off,0 V との間に挿入されているスイッチが on になるので,出力電圧は 0 V になります。

PMOS NMOS +5V 0 V 入力電圧 0 V のとき +5V 0 V (on) (off) 出力 5 V 入力電圧 5 V のとき +5V 0 V (off) (on) 出力 0 V
図 1.4
NOT 回路の MOS-FET をスイッチに置き換えて考える。

NOT 回路のはたらきは,図 1.5 のように,「つねに聞いたことと反対のことを言う人」と同じことです。


図 1.5
NOT 回路のはたらき。つねに聞いたことと反対のことを言う人と同じこと。

一つのNOT 回路ごとに図 1.1 のような回路図を描くと複雑になりすぎるので,実際の論理回路では,NOT 回路をひとまとまりとして,図 1.6 のような記号であらわします。現在一般的に使われている記号は MILミル (Military) 記号と呼ばれるものです。実際の回路では NOT 素子は電源の +5 V と 0 V の端子に線でつながないと働かないのですが,MIL 記号を使って論理回路を描くときには電源の +5 V と 0 V に接続する線は省略します。


図 1.6
NOT 回路(ゲート)の MIL 記号

また,NOT 回路は「NOT ゲート」あるいは「NOT 素子」,「反転回路」「inverterインバータ」とも呼ばれます。「NOT ゲート」と呼ばれる事が多いのですが,同じ gateゲート という言葉が 「FET のゲート端子」 とは違う意味で使われているので注意してください。


1−3−2 否定論理積回路
NAND circuit

二つの入力 A, B に対して,出力 Y が “ not (A and B) = AB ” と表される回路を NANDナンド 回路(否定論理積回路)と呼びます。図 1.7 のように,二組の CMOS について PMOS を並列に,NMOS を直列に接続すれば NAND 回路が実現されます。


図 1.7
MOS-FET による NAND 回路

NAND 回路での FET のはたらき方も,図 1.8 のようにスイッチで置き換えると理解しやすいでしょう。


図 1.8
NAND 回路の MOS-FET をスイッチにおきかえて考える。

0 V → 0,5 V → 1 として,NAND 回路への入力 A, B と,回路からの出力 Y との関係を表にすると表 1.1 のようになります。

表 1.1
NAND 演算の論理値表
ABY
001
011
101
110

図 1.9 に NAND 回路のはたらきを模式的に示します。


図 1.9
NAND 回路のはたらき

論理回路の中で NAND 演算を実現するための素子(NAND ゲート)は,図 1.10 のような MIL 記号であらわされます。


図 1.10
NAND ゲートの MIL 記号


1−3−3 論理積回路
AND circuit

NAND ゲートの出力に NOT ゲートを接続すれば,ANDアンド 回路が得られます(図 1.11, 1.12)。


図 1.11
CMOS による AND ゲート


図 1.12
AND ゲートの MIL 記号(左)。 実際の AND ゲートは,NAND ゲートとNOT ゲートの組み合わせで実現される(右)。


1−3−4 否定論理和回路と論理和回路
NOR circuit and OR circuit

NAND 回路と逆に,PMOS を直列に,NMOS を並列に接続すれば NORノア 回路が得られます(図 1.13)。またこれを NOT ゲートと接続すれば ORオア 回路になります(図 1.14)。


図 1.13
MOS-FET による NOR 回路


図 1.14
MOS-FET による OR 回路

NOR 素子と OR 素子の回路記号を図 1.15 に示します。


図 1.15
NOR 素子(左)と OR 素子(右)の MIL 記号

NAND 回路と NOR 回路では CMOS が2組で済むのに対して,AND 回路と OR 回路では CMOS が3組必要になります。 例えば A ∨ B の演算をしたい場合,この式のまま素子を組み合わせると,NOT 素子2つと OR 素子1つで CMOS が5組必要に見えますが,ド・モルガンの法則からこの演算は AB と同じ事であり,NAND 素子1つ, CMOS が2組だけあれば良いことがわかります。


1−3−5 排他的論理和回路
Exclusive OR circuit

二つの入力 A, B が食い違っているときにだけ 1 を出力する演算

Y = ( AB ) ∧ AB = ( AB ) ∨ ( AB )
 

は「排他的論理和」あるいは exclusive ORエクスクルーシブ・オアXORエックス・オアEORイー・オア とも呼ばれ,意外に良く使われます。そのうちの一例は第3章で扱う「算術演算」です。

また,排他的論理和回路は「階段灯のスイッチ」と同じ働きをします。階段灯のスイッチは1階と2階の2カ所に設置する必要があり,どちらのスイッチでも点灯/消灯を切り替えられなければいけません。実際の階段灯の配線には図 1.16 のような「3路スイッチ」が使われますが,「一方のスイッチが on のときだけ点灯する」のと同じです。


図 1.16
階段灯の3路スイッチ

MOS-FET を使う場合,図 1.17 のような回路で排他的論理和が実現されます。


図 1.17
MOS-FET による排他的論理和 (XOR) 演算回路

XOR ゲートの MIL 記号を図 1.18 に示します。


図 1.18
XOR ゲートの MIL 記号

以下,図 1.17 の回路でどのように XOR 演算が実現されているかについて検討します。


図 1.19
XOR 回路のしくみを説明する図。水色,黄色,ピンクの3組の CMOS で構成されている。

図 1.19 中,水色の CMOS は NOT 回路(1−3−1節)であり,入力 A がこの NOT 回路の入力として接続されていることを確認してください。この回路の出力は A と表されます。

残りの2組の CMOS の出力が並列に接続されたものが XOR 回路全体の出力となっていますが,さらに PMOS(上段)と NMOS(下段)とに分けて一つ一つの動作を確かめます。

図 1.19 中,黄色の PMOS (上) と NMOS (下) のゲートはいずれも入力 B に接続されていますが,PMOS のソースは A に,NMOS のソースは A に接続されています。 PMOS はゲート電圧 (B) がソース電圧 (A) より低い場合 (B < A) だけソース (A) とドレイン (D1) の間が導通状態になるので,“A = 1, B = 0” の時にはドレイン電圧が D1 = A = 1 と確定します。それ以外の場合にはソースとドレインの間は絶縁状態になるので,ドレイン電圧 D1 は確定しません。表 1.2D1 の値を確認してください。 一方,NMOS はゲート電圧 (B) がソース電圧 (A) より高い場合 (A < B) だけソース (A) とドレイン (D2) の間が導通状態になるので,“A = 1, B = 1” の時にドレイン電圧が D2 = A = 0 と確定し,それ以外の場合 D2 は不定です。表 1.2D2 の値を確認してください。

図 1.19 中,ピンクの PMOS (上) のゲートは A に,NMOS (下) のゲートは A に接続され,ソースはいずれも入力 B に接続されています。 PMOS はゲート電圧 (A) がソース電圧 (B) より低い場合 (A < B) だけソース (B) とドレイン (D3) の間が導通状態になるので,“A = 0, B = 1” の時にはドレイン電圧が D3 = A = 0 と確定し,それ以外の場合には D3 は不定です。表 1.2D3 の値を確認してください。 最後に,ピンクの NMOS はゲート電圧 (A) がソース電圧 (B) より高い場合 (B < A) だけソース (B) とドレイン (D4) の間が導通状態になるので,“A = 1, B = 0” の時にドレイン電圧が D4 = B = 1 と確定し,それ以外の場合 D4 は不定です。表 1.2D4 の値を確認してください。

XOR 回路の全体の出力 Y は4つのドレイン D1, D1, D1, D1 が並列に接続されたものですが,


2011年4月17日公開
2013年4月4日更新