• 検索結果がありません。

このスライドは以下の URL からダウンロード可能です 2

N/A
N/A
Protected

Academic year: 2021

シェア "このスライドは以下の URL からダウンロード可能です 2"

Copied!
108
0
0

読み込み中.... (全文を見る)

全文

(1)

計算機学

計算機学

伊藤彰則

aito@spcom.ecei.tohoku.ac.jp

(2)

このスライドは以下のURLからダウンロード可能です

(3)

参考書の紹介

● 計算機学入門 デジタル世界の原理を学ぶ 阿曽弘具著 共立出版 ¥2,900 以前教科書だった本の改訂版。講義の内容と一致しており、説明は詳しい。 ● CPUの創りかた 渡波郁著  毎日コミュニケーションズ¥2,940 個人的おすすめだが講義の前半部分しかカバーしていない。 ● ソフトウェアの20世紀 長谷川裕行著 翔泳社 ¥2,400 コンピュータとソフトウェアの歴史。講義と直接の関連はないが面白い。 ● コンピュータはなぜ動くのか 矢沢久雄著 

(4)

講義の流れ

(1)

● イントロダクション(今回) – コンピュータの歴史2進法・8進法・16進法 ● ハードウェアの原理 – 論理関数と論理回路論理関数の簡単化 ● 論理関数の数学 – ブール代数と代数系

(5)

講義の流れ

(2)

● ソフトウェアの原理 – CPUと機械語アセンブリ言語と高級言語データ構造とその操作計算のモデルと計算量 ● 試験

(6)

計算機(コンピュータ)とは何か

● 誰が何のために作ったのか。

● 計算機とは(原理的に)何なのか。

● 現在どのように使われているのか。

(7)

誰が:計算機をめぐる年表

● 17世紀 – ブレース・パスカル (1623-1662) ● 考える葦の人 ● 世界で初めて「計算機」 (calculator)を試作

(8)

誰が:計算機をめぐる年表

● 17世紀 – ゴットフリート・ウィルヘルム・フォン・ ライプニッツ (1646-1716) ● 2進法の発明者 ● 「自動的に真なる概念を導くための計 算方法」を研究 ● 計算機も試作 ● ニュートンとは永遠のライバル

(9)

誰が:計算機をめぐる年表

● 19世紀 – チャールズ・バッベジ (1791-1871) ● 2つの自動計算機械を設計 – 階差機関(Difference Engine)解析機関(Analytical Engine) ● でも完成しなかった…

(10)

Babbageの解析機関

● 世界初の機械式計算機 – 加減乗除算あらかじめ決められた順序で 計算する – 結果の印字

(11)

誰が:計算機をめぐる年表

● 世界初のプログラマ(Translator) – エイダ・オーガスタ・ ラブレス公爵夫人 (1815-1852) ● 詩人バイロンの娘 ● ド・モルガンに師事 ● チャールズ・バッベジを支援した ● 不遇な晩年

(12)

誰が:計算機をめぐる年表

● 20世紀 – アラン・チューリング(1912-1954) ● 自動機械による証明についての理論的考察 ● 実際に計算をする「機械」を想定(チューリン グマシン) ● 計算の可能性についての理論を構築 ● 暗号解読器「コロッサス」の開発に参加 ● 不遇な晩年

(13)

誰が:計算機をめぐる年表

● 20世紀 – エッカート&モークリー (UPENN) ● 世界初の(実用化された)電子 式コンピュータENIACを開発 ● 弾道計算に特化した計算機

(14)

これが

ENIACだ

● 真空管17468本 ● コンデンサ10000 個 ● スイッチ6000個 ● ケーブルの接続 で実行を制御

(15)

何のために?

● 正しい推論のため(ライプニッツ)

● 数表を作るため(バッベジ)

● 「計算」とは何かを考えるため(チューリング)

(16)

原理的に何なのか?

● 計算モデル:原理的に何が計算できるかを考える ための数学モデル – コンピュータを抽象化したもの速度やメモリ容量などの制約を考えない ● さまざまな計算モデル – チューリングマシン(TM)ランダムアクセスマシン(RAM)帰納的関数

(17)

チューリングマシン

● 仮想的な計算機械 by Alan Turing 0 ; B A = 1 = A + 2 ; F 状態 ヘッド

(18)

ランダムアクセスマシン

● 現在のコンピュータに近い – 計算部とメモリがあるメモリは必要に応じていくらでも大きいどのメモリにアクセス(読み書き)するときにもかかる時 間は同じ(ランダムアクセス) 無限に大きいメモリ 計算部 12312番目のメモリの値と

(19)

現在どのように使われているのか?

● 汎用の何でも機械として。 – 電話。ごはんの炊け具合を監視する。お部屋の温度をいい具合に調節する。大きいお友達のゲーム。テレビを録画する。あるいはテレビそのもの。

(20)

どのようにして実現されるのか?

コンピュータの実現のための階層

ソフトウェア アプリケーション MS-Wordとか

プログラミング言語 C, C++, Java, Ruby, Python, ...

OS Windows, MacOS, iOS, Linux, Android, ... ハードウェア CPU IA32, x86-64, ARM, MIPS, PowerPC, PIC, ...

論理回路 機能ブロック レジスタ、ALU、メモリ、... 論理ゲート AND, OR, NOT, ...

(21)

この講義では何をするのか

1.計算機の動作原理を理解するための論理回路の 理解(主に組み合わせ論理回路)。 (進んだ内容は「ディジタルコンピューティング」の範疇) 2.それに伴う論理演算・論理関数の理解。 3.計算機のネイティブな動作(機械語)の理解。 4.抽象的な計算機としての計算モデルの理解と、計 算量についての初歩的な理解。

(22)

あらゆる計算が1と0で実現できる

● 10進法の数字⇔2進法の数字(1と0) ● 文字⇔数字 ● 文字列⇔数字列=数字 ● 画像⇔数字 ● 音声⇔数字 ● その他のデータ⇔数字

計算機が行うすべての処理は

(23)

10進法、2進法、8進法、16進法

10進 2進 8進 16進 10進 2進 8進 16進 0 0 0 0 8 1000 10 8 1 1 1 1 9 1001 11 9 2 10 2 2 10 1010 12 A 3 11 3 3 11 1011 13 B 4 100 4 4 12 1100 14 C 5 101 5 5 13 1101 15 D 6 110 6 6 14 1110 16 E 7 111 7 7 15 1111 17 F

(24)

10進・2進・16進数の変換

● 例題 – 108(10)を2進法で表せ。 ● 解答 – ある数xを2進数で表したとき、それが偶数ならば下1桁0、奇数ならば1になる。したがって2で割った余りを計 算すれば、2進数の最下桁が求まる。以下同様。 ) 2 108 ...0 2 54 ...0 2 27 ...1) )

(25)

10進・2進・16進数の変換

● 例題 – 110010(2)を10進法で表せ。 ● 解答 – 2進数のn桁目だけが1である数は2n-1である。 したがって・・・ 110010 = 10 + 10000 2 1 = 2 24 = 16 2+16+32=50

(26)

10進・2進・16進数の変換

● 例題 – 10110110010(2)を16進法で表せ。 ● 解答 – 16進数の1桁は2進数の4桁にそのまま対応する。ただ し下から割り当てていく。

10110110010

2

B

5

5B2

(27)

演習

● 次の2進数を8進数と16進数で表せ。

 

 

0010 0100 0010 0110

● 次の10進数を2進数と16進数で表せ。

(28)

2進数の演算

● 加算 0+0=0, 0+1=1+0=1, 1+1=10 ● 減算  0-0=0, 0-1=-1, 1-0=1, 1-1=0 ● 乗算  0×0=0×1=1×0=0, 1×1=1, 1×10=10×1=10, 10×10=100, 10×11=11×10=110,...

これらは「算術演算」と呼ばれる

(29)

2進数の演算

● どんなデータも0と1で表せる →すべての計算は01の列に対する関数で表現で きる ● 例 f (0101...)=001011.... f (00)=0 f (01)=1 f (10)=1 f (11)=1 入力の桁数が有限ならば入力 のパターンも有限 すべての入力に対して出力を

(30)

基本的な論理関数(論理演算)

● AND演算(論理積) ● OR演算(論理和) 0⋅0=0 0⋅1=0 1⋅0=0 1⋅1=1

x

⋅y , x y , x∧ y

2つの引数の両方が1の場合だけ1

x

+ y , x∨ y

0+ 0=0 0+ 1=1 2つの引数の両方が0の場合だけ0

(31)

基本的な論理関数(論理演算)

● NOT演算(否定) ● XOR演算(排他的論理和) ̄0=1 ̄1=0

̄x , ¬x

x

⊕ y , x∨ y

0⊕0=0 0⊕1=1 1⊕0=1

~

2つの引数が異なる場合だけ1 実はAND,OR,NOTで作れる

(32)

組み合わせて作れる論理演算

● NAND演算 ● NOR演算

x y

x

+ y

0+ 0=1 0+ 1=0 0⋅0=1 0⋅1=1 1⋅0=1 1⋅1=0

(33)

論理演算の基本的性質

● 交換則(交換律)

● 結合則(結合律)

● 分配則(分配律)

● ド・モルガン則(ド・モルガン律)

x⋅y= y⋅x x+ y= y+x

x⋅( y⋅z)=(x⋅y)⋅z x+ ( y+ z)=(x+ y)+ z

x⋅( y+ z)=(x⋅y)+ ( x⋅z) x+ ( y⋅z)=( x+ y)⋅(x+ z)

(34)

論理演算の記述の優先順位

● 通常はAND演算をOR演算より優先して書く

(算術演算の記述法と同じ)

● 紛らわしい場合はカッコを使う

(35)

論理関数(論理演算)は何種類あるか

● 論理関数の引数の数を固定する →入力、出力ともに有限のパターンしかないので、   論理関数は有限個しかない ● 例:1変数論理関数は4種類 f 0(0)=0 f 0(1)=0 f 0(x)=0 f 1(0)=0 f 1(1)=1 f 1(x)=x f 2(0)=1 f 2(1)=0 f 2(x)=̄x f 3(0)=1 f 3(1)=1 f 3( x)=1

(36)

論理関数(論理演算)は何種類あるか

n変数関数の場合、入力のパターンは2n通り

● それぞれに対して、出力のパターンは0か1

入出力のパターン数=

2

2

(37)

真理値表

● すべての入力パターンに対して出力を定義すれば 論理関数が定義できる →表にするとわかりやすい

真理値表

(truth table)

x y x+y 0 0 0 0 1 1 1 0 1 x y x·y 0 0 0 0 1 0 1 0 0 x x 0 1 1 0

AND

OR

NOT

(38)

真理値表

● 注意事項 – 引数(入力)のパターンは、その並びを2進数と見たとき に「だんだん増えていく」順番に記述するのが普通 – 対応関係が同じでも、思いついた順番に並べるのはよ くない! x y x·y 0 0 0 1 1 1 x y x·y 0 0 0 0 1 0 GOOD

(39)

真理値表による証明

● 真理値表によってド・モルガン則を確かめてみよ

う。

x y x y x·y x+y x·y x+y x·y x+y

0 0 1 1 0 0 1 1 1 1

0 1 1 0 0 1 1 0 0 1

1 0 0 1 0 1 1 0 0 1

(40)

基本論理演算と論理関数

● AND, OR, NOT演算の組み合わせだけでどんな

論理関数でも作ることができる。 ● 証明:引数の数に関する数学的帰納法 – 引数1つの時 ● 引数1つの論理関数は前述の通り4種類しかない。 f 0( x)=0=x⋅̄x f 1(x)=x f ( x)=̄x

成立

(41)

基本論理演算と論理関数

引数n個のとき、引数n-1個では成立を仮定 ● 任意のn変数論理関数 – 次のn-1変数論理関数を考えるここで次の式を考える:「x=0ならa、x=1ならb」 f (x1 , x2 ,…, xn) g0( x1 , x2 ,… , xn−1)= f (x1 ,…, xn−1 ,0) g1( x1 , x2 ,… , xn−1)= f ( x1 ,…, xn−1 ,1) ̄x a+ x b x a b xa xb xa+ab 1 0 0 0 0 0 1 0 1 0 1 1 x a b xa xb xa+ab 0 0 0 0 0 0 0 0 1 0 0 0

(42)

基本論理演算と論理関数

● xnの値によって関数を切り替える – xn=0 ⇒ – xn=1 ⇒ ● 前ページの考察により、 ● 仮定よりg 0とg1はAND,OR,NOTのみで表せるの f ( x1,… , xn−1, xn)=g0( x1 ,…, xn−1) f ( x1,… , xn−1, xn)=g1( x1 ,… , xn−1) f ( x1 ,… , xn−1 , xn)=xn g0( x1 ,… , xn−1)+ xn g1( x1,… , xn−1)

(43)

演習

● 分配律が成立していることを真理値表で確かめ

よ。

x⋅( y+ z)=( x⋅y)+ ( x⋅z) x+ ( y⋅z)=(x+ y)⋅(x+ z)

x y z xy xz y+z x(y+z) xy+xz

0 0 0 0 0 0 0 0

(44)

論理演算と論理素子

● ある論理演算を実現するための電子回路 (論理ゲート) ANDゲート ORゲート NOTゲート

MIL記号

(45)

論理演算と論理素子

● ゲートの端にある○が「反転」を表す

NANDゲート NORゲート NOTゲート

(46)

等価な論理ゲート

● ド・モルガン律などによる = A B B

(47)

NANDゲートは万能

● NANDゲートですべてのゲートの代用ができる = = = x⋅x=̄x x⋅y=x⋅y

(48)

NANDゲートの実現例

● Diode-Transistor Logic (DTL) – 簡略化した回路図(実際はもう少し複雑)DTLは遅くて消費電力が大きいので、実際にはあまり 使われない V+ V+ V+ V+ V+ V+ H L L H

(49)

半導体でなくても論理ゲートは作れる

● リレーで作る論理ゲート

コイルに電流を流すと隣にある

スイッチがON/OFF

(50)

論理演算と論理回路

● 論理式⇔論理回路 ● 例

Z

= ABBCCA

A B C Z

(51)

演習

● 次の論理式に基づく論理回路を描け。

S

= X⋅Y  X⋅Y

C

= X⋅Y

?

X Y C S

(52)

半加算器

● さっきの論理式の真理値表 X Y C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 X, Yを1桁の2進数、CSを2桁の2進数と見 C: Carry (桁上げ) S: Sum (和)

(53)

桁の多い加算

● 2桁以上の2進数の加算をするにはどうする? – 桁上げを考慮⇒3つの2進数の和を計算しなければな らない – 3つの1桁の2進数 a,b,cを加算→2桁の2進数CS a b c C S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0

(54)

全加算器

(full adder)

(55)

発展

● 前ページの回路の入出力関係がその前の真理値 表と同じになっていることを確かめよう ● 2ページ前の真理値表を直接表現する論理式を考 えてみよう C= f (a , b , c) S=g (a ,b , c)

(56)

桁の多い加算器

● 筆算と同じ要領(下から順に桁上げ)

1111

+1111

---10000

1 1 1 1

(57)

論理関数の設計

● これまでは論理式から論理回路を描いていた ● 本当にやりたいこと – 要求仕様(欲しい入出力関係)を実現する論理回路 ● やるべきこと – 要求仕様(真理値表)→論理式(関数)→論理回路 ● 問題点 – どうやって真理値表を満たす論理式を作るか真理値表を満たす論理式は1つではない どういう論理式を作ればいいか

(58)

真理値表から論理関数へ

● 次の真理値表で表される論理式(論理関数)は? x y z f(x,y,z) 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1

(59)

真理値表から論理関数へ

● 次の真理値表で表される論理式(論理関数)は? x y z f(x,y,z) 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 1

答えは唯一ではない

f =̄x y ̄z+ x ̄y z+ x y ̄z f = (x+ y+ z)( x+ y+ ̄z) (x+ ̄y+ ̄z)(̄x+ y+ z) (̄x+ ̄y+ ̄z) f = y ̄z+ x ̄y z

(60)

真理値表から論理関数へ

● 論理関数への変換の考え方 – できるだけ機械的に変換できたほうがいい ● 真理値表から標準形論理式への変換 – できるだけ論理演算が少ないほうがいい ● 論理回路として実現した時の素子数が少ない – 低コスト、高速 ● 演算数が最小の論理式:最簡形論理式 ● 最簡形論理式の導出 – カルノー図 – クワイン・マクラスキ法

(61)

基礎的な概念

● 基本的に積和形(論理積の論理和)で考える ● リテラル:変数または変数の否定 ̄y z+ x y ̄z リテラル ̄y z+ x y ̄z リテラル リテラル 項(積項)

(62)

標準形論理式

● 積和標準形(主加法標準形) Sum-of-product – リテラルの論理積の論理和すべての項がすべての変数を含む同じ項は1回しか出てこない積和標準形の例積和標準形でない例 f ( x , y , z)=̄x ̄y z+ x ̄y z+ x y ̄z f ( x , y , z)=̄y z+ x ȳz

(63)

標準形論理式

● 和積標準形(主乗法標準形) Product-of-sum – リテラルの論理和の論理積すべての論理和がすべての変数を含む同じ論理和は1回しか出てこない和積標準形の例和積標準形でない例 f ( x , y , z)=( x+ y+ z)(x+ y+ ̄z)(̄x+ y+ z) f ( x , y , z)=( x+ z)(̄x+ y+ z) f ( x , y , z)=( x+ z)(̄x y+ z)

(64)

2つの標準形の関係

● どんな論理式でも、積和標準形と和積標準形の両 表で表現できる。 – 証明(変数の数による数学的帰納法) ● 1変数の場合は自明 ● k変数の場合に成立を仮定。 任意のk+1変数論理関数を考える 次のk変数関数を考える f (x1 , x2 ,…, xk+ 1) g0(x1 ,…, xk)= f ( x1 , x2 ,…, xk , 0) g1( x ,…, x )= f (x , x ,…, x ,1)

(65)

2つの標準形の関係

● gをそれぞれ積和と和積標準形で表した論理式 ● 以前と同じ議論により、 g0( x1 ,…, xk)→ gSOP0 ( x1 ,…, xk), g0POS (x1 ,…, xk) g1(x1 ,…, xk)→ g1SOP( x1 ,…, xk) , g1POS (x1 ,…, xk) f (x1, x2 ,…, xk , xk+ 1)=xk+ 1 g0( x1 ,…, xk)+ xk+ 1 g1( x1 ,…, xk) =xk+ 1 g0SOP( x1 ,…, xk)+ xk+ 1 g1SOP( x1 ,…, xk) これを分配律によって展開すれば、fも積和標準形で表 せる。

(66)

2つの標準形の関係

● 和積標準形の場合、まず次の関係を考える

x=0ならa、x=1ならbとなる論理式

● したがって

(x+ a)(̄x+ b)

x=0 →( x+ a)(̄x+ b)=(0+ a)(1+ b)=a⋅1=a x=1 →( x+ a)(̄x+ b)=(1+ a)(0+ b)=1⋅b=b f ( x1, x2 ,…, xk , xk+ 1)=( xk+ 1+ g0( x1 ,…, xk))( xk+ 1+ g1(x1,…, xk)) =( xk+ 1+ gPOS 0 ( x1,…, xk))( xk+ 1+ gPOS 1 ( x1,…, xk)) これを分配律によって展開すれば、fも和積標準形で表 せる。

(67)

標準形論理式と論理回路設計

● ある標準形は、1つの仕様(真理値表)に対して基 本的に1つしか存在しない 真理値表 一対一 標準形 論理式 一対一 論理回路 x y f(x,y) 0 0 0 0 1 1 1 0 1 1 1 0 ̄x y+ x ̄y

(68)

真理値表から積和標準形へ

x y x・y x・y x・y x・y

0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 ● 最小項:すべての変数のリテラルを含む積項 ● ある入力の組み合わせの時だけ1になり、それ以外の組み合わせでは0になる。 x y f(x,y) 0 0 0 0 1 1 1 0 1 1 1 0 実現したい真理値表のうち、1になる組み合わせの最小項だけを OR で つなぐと積和標準形になる。 f (x , y)=̄x y+ x ̄y

(69)

真理値表から和積標準形へ

x y x+y x+y x+y x+y

0 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 ● 最大項:すべての変数のリテラルを含む論理和 ● ある入力の組み合わせの時だけ0になり、それ以外の組み合わせでは1になる。 x y f(x,y) 0 0 0 0 1 1 1 0 1 1 1 0 実現したい真理値表のうち、0になる組み合わせの最大項だけを AND でつなぐと和積標準形になる。

(70)

演習

● 次の真理値表による論理関数を積和標準形と和 積標準形で表せ。 x y z f(x,y,z) 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 1

(71)

論理式の簡単化

● 標準形で表現した論理式は一般に冗長 x y f(x,y) 0 0 0 0 1 1 1 0 1 1 1 1 ̄x y+ x ̄y+ x y x y

̄x y+ x ̄y+ x y=̄x y+ x ̄y+ x y+ x y =(̄x+ x) y+ x( y+ ̄y)=1⋅y+ x⋅1=x+ y

x y

(72)

基礎的な概念

● 論理関数の順序 – 値の順序:0≤0, 0≤1, 1≤1論理関数の順序:f(x),g(x)について、 ∀x(f(x)≤g(x))↔f≤g – 例:確かめてみよう ● xy ≤ x ≤ x+y – (真理値表を書き、左辺が1のところが右辺でも必ず1になっているな らば≤が成立)

(73)

基礎的な概念

● 系 – 論理関数a,b,c,dについて ● a ≤ c, b ≤ d ならば a+b ≤ c+d ● a ≤ c, a ≤ d ならば a ≤ c+d ● a ≤ c, b ≤ c ならば a+b ≤ c

(74)

基礎的な概念

● 論理式 f の主項とは – リテラルの論理積 t のうち、次の条件を満たすもの ● t ≤ f であり、 ● tからそれ以上リテラルを取り除くと t ≤ f でなくなる ● 例 x y z f x・y・z x・y x 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 f ≤x ̄y ̄z f ≤x ̄y f ≤x これが主項

(75)

主項と論理式

● ある論理式 f の主項を全部列挙し、その論理和を とれば、それは f と一致する。 – ただし一般には冗長 x y z f x・y x・z y・z 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 f = x y+ x ̄z+ y z=x ̄z+ y z

(76)

必須主項

● ある論理式を構成するために必ず必要な主項 x y z f x・y x・z y・z 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0

f

=x y+ x ̄z+ y z=x ̄z+ y z

必須 主項

(77)

最簡形論理式とは

● 次の条件を満たす論理式: – ある論理関数を実現する論理式のうち、積項の数が最小で、かつ式全体のリテラルの数が最小のもの ● 論理式を簡単化するときの目標 ● 論理関数の仕様(真理値表)に対して最簡形が一 意に決まるとは限らない

(78)

最簡形を求めるには

● 次のような手順を踏む 1. 与えられた論理関数の主項をすべて求める 2. 求まった主項のなかの必須主項を調べる 3. すべての必須主項と、それ以外の主項のうちできるだ けリテラルの少ない主項を組み合わせて元の論理関数 を表現する ● これらの求め方でいくつかの方法がある ● カルノー図 ● クワイン・マクラスキ―法

(79)

最簡形を求める方法

● カルノー図 (Karnaugh map) – 真理値表に似た表と四角形でできた図を使う人間向き変数の数はふつう4個ぐらいまで ● クワイン・マクラスキ―法 (Quine-McClusky alg.) – 文字列処理計算機向き(人間にはつらい)変数の数は多くてもよいが、変数が多いと時間がかか

(80)

カルノー図

● 2次元の真理値表をもとに主項を発見する ● 3変数(x,y,z)、4変数(x,y,z,w)の表の例 – 0,1の並びに注意 xy\zw 00 01 11 10 00 01 11 xy\z 0 1 00 01 11

(81)

カルノー図

● カルノー図では積項は長方形になる xy\zw 00 01 11 10 00 01 11 10

z

y

x

(82)

カルノー図

● カルノー図は表の上下左右がつながっている xy\zw 00 01 11 10 00 01 11

y

w

(83)

カルノー図

● リテラルの多い積項の例 xy\zw 00 01 11 10 00 01 11 10

x・z

z・w

x・y・z・w

x・y・w

(84)

カルノー図による論理式の簡単化

●カルノー図の表を描き、目標となる論理式が1となる マス目に“1”を記入 ●“1”を囲む、できるだけ大きい長方形(=主項)を探 す ● 辺の長さは2のn乗のみ ● 上下左右が連続していることを忘れずに ●すべての“1”をカバーする、できるだけ少ない数の、 できるだけ大きい長方形の組み合わせを探す

(85)

カルノー図の例

カルノー図の表を描き、目標となる論理式が1となる マス目に“1”を記入 xy\zw 00 01 11 10 00 1 1 1 01 1 1 11 1 1 10 1 1

(86)

カルノー図の例

“1”を囲む、できるだけ大きい長方形(=主項)を探す – 辺の長さは2のn乗のみ上下左右が連続していることを忘れずに xy\zw 00 01 11 10 00 1 1 1 01 1 1 11 1 1 1 1

(87)

カルノー図の例

すべての“1”をカバーする、できるだけ少ない数の、 できるだけ大きい長方形の組み合わせを探す xy\zw 00 01 11 10 00 1 1 1 01 1 1 11 1 1 10 1 1 この2つは必須 ではない→大き いほうを選ぶ

(88)

カルノー図の例

その長方形の組み合わせに対応する論理式が最簡 形になっている xy\zw 00 01 11 10 00 1 1 1 01 1 1 11 1 1 1 1 使わない x w+ y w+ z w+ ̄x ̄y ̄w

(89)

演習

● 次のカルノー図を使って最簡形論理式を求めよ。 xy\z 0 1 00 1 01 1 11 1 1 10 1 xy\zw 00 01 11 10 00 01 1 1 1 11 1 1 1 10 1 1 1

(90)

部分論理関数とカルノー図

● 入力のすべてのパターンを考えなくてよい場合 – 例:7セグメントLEDに0~4の数字を表示 0 1 2 3 4 5 6 LED エンコーダ x1 x2 x3 b0 b6

(91)

部分論理関数とカルノー図

● b1~b6の真理値表 – 3行の入力は想定しなくてよい→部分論理関数 0 1 2 3 4 5 6 x1 x2 x3 b0 b1 b2 b3 b4 b5 b6 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 1 N/A 1 1 0 N/A 1 1 1 N/A

(92)

部分論理関数とカルノー図

● b0の論理関数の設計 x1x2\x3 0 1 0 0 1 0 1 1 1 1 1 1 0 x1x2\x3 0 1 0 0 1 0 1 1 1 1 1 * * 1 0 * 想定外の入力に対し て0を出力 想定外の入力に対して何を出力してもよい

(93)

部分論理関数とカルノー図

● 演習:b6に対応する論理関数を設計しよう。 x1 x2 x3 b6 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 N/A 1 1 0 N/A

(94)

クワイン・マクラスキー法

● 機械的に最簡形を求める方法 ● 文字列処理によって主項を発見する ● 手順 ● すべての最小項を文字列で表現する ● 組み合わせ表を使って文字列をまとめていく (主項の発見) ● 主項表を作り、必須主項を発見する ● 必須主項以外の主項を発見する

(95)

クワイン・マクラスキ―法

● 項を文字列化する例(変数 xyzw の場合) – x・y・z・w → 1111x・y・z・w → 0101x・y・z → 111-– x・z・w → 1-00x・z → 1-0-● 0と1が1か所だけ違う文字列をまとめる – 1111+1110=111- x y z w+ x y z ̄w=x y z(w+ ̄w)=x y z

(96)

クワイン・マクラスキー法

● 表を使った主項の発見 1. すべての最小項の組み合わせ表を作り、第0表とする。 n←0とする。 2. まとめられる文字列はまとめる。まとめられなかった項 に印をつける。 3. 文字列をまとめることができた場合は、それらを集めて 第(n+1)表を作る。2.へ。 4. 印のついた項が主項である。

(97)

表を使った主項の発見

g x , y , z ,w= x y wx y z w y z wx y z w x y z wx z 最小項は0001 0010 0011 0111 1001 1010 1011 1100 1110 1111 第0表 0010 0011 0111 1001 1010 1011 1100 1110 1111 0001 00-1 -001 0010 001- -010 0011 0-11 -011 0111 -111 1001 10-1 1010 101- 1-10 1011 1-11

(98)

表を使った主項の発見

第1表 001- 0-11 -001 -010 -011 10-1 101- 1-10 11-0 -111 1-11 111-00-1 -0-1 001- -01-0-11 --11 -001 -0-1 -010 -01--011 --11 10-1 101- 1-1-1-10 1-1-11-0 -111

(99)

表を使った主項の発見

第2表 -01- --11 1-1--0-1 -01---11 まとめられる組み 合わせはない 発見された主項は -0-1, -01-, --11, 1-1-, 11-0 次にこの中から必須主項を探す→主項表

(100)

主項表

0001 0010 0011 0111 1001 1010 1011 1100 1110 1111 -0-1 x x x x -01- x x x x --11 x x x x 1-1- x x x x 11-0 x x ある主項がどの最小項をカバーするか記入する

(101)

主項表

0001 0010 0011 0111 1001 1010 1011 1100 1110 1111 -0-1 x x x x -01- x x x x --11 x x x x 1-1- x x x x 11-0 x x 最小項のうち印が1個しかついてないものをチェック

(102)

主項表

0001 0010 0011 0111 1001 1010 1011 1100 1110 1111 -0-1 x x x x -01- x x x x --11 x x x x 1-1- x x x x 11-0 x x その印がある行の主項が必須主項 -0-1, -01-, --11, 11-0 は必須主項 1-1- は必須主項でない

(103)

主項表

0001 0010 0011 0111 1001 1010 1011 1100 1110 1111 -0-1 x x x x -01- x x x x --11 x x x x 1-1- x x x x 11-0 x x 必須主項がカバーする最小項をチェック 必須主項だけですべての最小項がカバーできる →必須主項だけで最簡形が構成される g ( x , y , z , w)=¯y w+¯y z+z w+x y ¯w

(104)

カルノー図による

QM法の理解

xy \ zw 00 01 11 10 00 0001 0011 0010 01 0111 11 1100 1111 1110 10 1001 1011 1010 第0表 xy \ zw 00 01 11 10 00 01 第1表 00-1 -111 001- 111--001 1-11

(105)

カルノー図による

QM法の理解

xy \ zw 00 01 11 10 00 01 11 10 第2表 xy \ zw 00 01 11 10 00 01 最適な組み合わせ -0-1 -01---11

(106)

1-1-必須主項以外が必要な例

g ( x , y , z)=̄x ̄y z+ ̄x y z+ x y ̄z+ x y z+ x ̄ȳz 001 011 110 111 100 第0表 011 110 111 100 001 0-1 011 -11 110 11- 1-0 111 0-1 -11 11- 1-0 第1表 -11 11- 1-0 0-1

(107)

必須主項以外が必要な例

主項表 001 011 110 111 110 0-1 * * -11 * * 11- * * 1-0 * * 必須 必須 001 011 110 111 110 0-1 * * -11 * * 11- * * 1-0 * * 必須主項でカバーされる最小項 どちらでもよいこ とがわかる

(108)

演習

x y z

x y zx y zx y zx y z

を簡単化せよ。 クワイン・マクラスキー法を使って

参照

Outline

関連したドキュメント

近年の動機づ け理論では 、 Dörnyei ( 2005, 2009 ) の提唱する L2 動機づ け自己シス テム( L2 Motivational Self System )が注目されている。この理論では、理想 L2

名の下に、アプリオリとアポステリオリの対を分析性と綜合性の対に解消しようとする論理実証主義の  

ところで,このテクストには,「真理を作品のうちへもたらすこと(daslnsaWakPBrinWl

の点を 明 らか にす るに は処 理 後の 細菌 内DNA合... に存 在す る

不変量 意味論 何らかの構造を保存する関手を与えること..

が前スライドの (i)-(iii) を満たすとする.このとき,以下の3つの公理を 満たす整数を に対する degree ( 次数 ) といい, と書く..

これは基礎論的研究に端を発しつつ、計算機科学寄りの論理学の中で発展してきたもので ある。広義の構成主義者は、哲学思想や基礎論的な立場に縛られず、それどころかいわゆ

しかし何かを不思議だと思うことは勉強をする最も良い動機だと思うので,興味を 持たれた方は以下の文献リストなどを参考に各自理解を深められたい.少しだけ案