Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

コンピュータシステムの理論と実装2

83 views

Published on

第1回目の勉強会で使う資料です。

Published in: Engineering
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

コンピュータシステムの理論と実装2

  1. 1. コンピュータシステム の理論と実装②
  2. 2. 2章 ブール算術 PCで用いられる演算 → 論理演算 + 算術演算 1章ブール論理 2章ブール算術 (加算と減算) 論理演算と算術演算を処理するハードウェア装置 → ALU(Arithmetic and Logic Unit)
  3. 3. 2進数と10進数の関係 (𝑥 𝑛 𝑥 𝑛−1・・・𝑥0) 𝑡𝑤𝑜= σ𝑖=0 𝑛 2𝑖 × 𝑥𝑖 2進数から10進数 (ex) (11010) 𝑡𝑤𝑜= 20 × 0 + 21 × 1 + 22 × 0 + 23 × 1 + 24 × 1 = 26 10進数から2進数 連除法 ・・・ 2で割り続けて、余りを並べる (ex) 26 → (11010) 𝑡𝑤𝑜 各桁の重み 各桁の数 262 132 0 62 1 32 0 1 1 下 か ら 並 べ る
  4. 4. 2進数加算 2進数の加算 → 10進数と同様。 各桁で足し合わせ、1を超えたら桁上げ(キャリー) (ex) 1001 + 0101 1001 + 0101 1110 0001 キャリー
  5. 5. 算術オーバーフロー コンピュータでは、扱える桁数(ビット数)の上限が決まっている! 上限を超えてしまった状態 = オーバーフロー 特に 数値の計算によるオーバーフロー = 算術オーバーフロー ex) 上限が4ビットの場合 1001 + 0101 1110 オーバーフロー なし 結果が4ビット に収まってる! 1011 + 0111 10010 オーバーフロー あり 結果が5ビット に突入!
  6. 6. 算術オーバーフロー 算術オーバーフローが起こった場合の処理 → ・ エラーを出力し、プログラムを停止 ・ オーバーフローを示す特殊な値を出力 ・ オーバーフローで溢れたビットを無視 ・ etc. 恐らく、今回はこれ
  7. 7. 符号付き2進数 数 → 正の数と負の数 0と1を用いて、符号付きの数をどう表現するか? → 2の補数表現が主流! 符号がなくてもOK +2 or 2 −2 符号が必要
  8. 8. 2の補数 ある𝑛 桁2進数𝑥の2の補数 ҧ𝑥は次のように定義される。 ҧ𝑥 𝑡𝑒𝑛 = ቊ 2 𝑛 − 𝑥 𝑡𝑒𝑛 (𝑥 ≠ 0) 0 (𝑥 = 0) ex) 4桁2進数 (0010) 𝑡𝑤𝑜を2の補数表現すると 24 − 2 = 14 = (1110) 𝑡𝑤𝑜
  9. 9. 2の補数 2の補数を簡単に求めるテクニック 1. 各ビットの数を反転させる 2. 最下位ビットに1を加える ex) (0010) 𝑡𝑤𝑜の2の補数を求める 1. ビットの反転 → (1101) 𝑡𝑤𝑜 2. 1を加える → (1110) 𝑡𝑤𝑜 ҧ𝑥 𝑡𝑒𝑛 = ቊ 2 𝑛 − 𝑥 𝑡𝑒𝑛 (𝑥 ≠ 0) 0 (𝑥 = 0) で求めるのは面倒。。。
  10. 10. 2の補数 2の補数は、元の数と絶対値は同じで逆符号をもつ数となる! ex) (0010) 𝑡𝑤𝑜 の 2の補数は(1110) 𝑡𝑤𝑜 (0010) 𝑡𝑤𝑜 ↔ (1110) 𝑡𝑤𝑜 (0010) 𝑡𝑤𝑜 + (1110) 𝑡𝑤𝑜 = (0000) 𝑡𝑤𝑜 本当に対か? 算術オーバーフローで5桁目は無視される!
  11. 11. 符号付き2進数の注意点 (0010) 𝑡𝑤𝑜の2の補数は(1110) 𝑡𝑤𝑜 ⇒ (1110) 𝑡𝑤𝑜= −2 ただ、 (1110) 𝑡𝑤𝑜= 14では? → 符号付き2進数では、最上位ビットが1の場合は、負の数として扱う! 符号を考慮するなら (1110) 𝑡𝑤𝑜≠ 14
  12. 12. 符号付き2進数の注意点 なぜ最上位ビットが1で負の数? → 限られたビット数で正数、負数の両方を表現するため! ex) 数字を4ビットで扱う場合 24 = 16 通りの数を表せる → 正の数、負の数を8つずつに 分ける → 最上位ビットが0 : 正の数 最上位ビットが1 : 負の数
  13. 13. 符号付き2進数の注意点 最上位ビットが0 : 正の数 最上位ビットが1 : 負の数 正の数 負の数 0 0000 1 0001 −1 1111 2 0010 −2 1110 3 0011 −3 1101 4 0100 −4 1100 5 0101 −5 1011 6 0110 −6 1010 7 0111 −7 1001 −8 1000
  14. 14. 2進数減算 2の補数表現を用いると、減算は加算として扱える! ex) 6 −3 = 3 を2の補数表現を用いて計算 6 −3 = 6 + (−3) = (0110) 𝑡𝑤𝑜+(1101) 𝑡𝑤𝑜 = (0011) 𝑡𝑤𝑜 = 3 加算として扱う
  15. 15. 加算器 加算器の種類 ・半加算器 ・・・ 2つの1ビットの和を求める ・全加算器 ・・・ 3つの1ビットの和を求める ・(多ビット半)加算器 ・・・ 2つの多ビットの和を求める ・インクリメンタ ・・・ 1を加える
  16. 16. ALU (Arithmetic and Logic Unit) ALU ・・・ 論理演算と算術演算を処理する装置 制御ビットによって、演算の内容が操作される 今回のALUは、6つの制御ビットを用いる → 26 = 64通りの演算内容が存在するが、以降で重要と なってくるのは18種類
  17. 17. 作業 1. 4種加算器とALU回路を実装する 2. シミュレーション
  18. 18. 半加算器 sum ・・・ 最下位ビット sum = Xor(a,b) carry ・・・ 最上位ビット carry = And(a,b) a b carry sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 Half Adder a b sum carry
  19. 19. 半加算器 sum ・・・ 最下位ビット sum = Xor(a,b) carry ・・・ 最上位ビット carry = And(a,b) Xor a b sum carryAnd a b carry sum 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
  20. 20. 全加算器 sum ・・・ 最下位ビット carry ・・・ 最上位ビット Full Adder a b sum carry a b c carry sum 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 1 1 0 1 0 1 1 1 1 1 c
  21. 21. 全加算器 a + b (a + b) + c a=b=c=1の場合の例 a sum carry b Half Adder Half Adder c Or s c s c c1 s1 s1 c2 1 1 + 1 1 0 a b c1 0 1 0 + 1 1 1 c1 s1 c c2 sumcarry
  22. 22. 全加算器 a + b (a + b) + c a=b=c=1の場合の例 a sum carry b Half Adder Half Adder c Or s c s c c1 s1 s1 c2 1 1 + 1 1 0 a b c1 0 1 0 + 1 1 1 c1 s1 c c2 sumcarry 半加算器 半加算器Orゲート
  23. 23. 多ビット加算器 16ビット2進数の加算 ・・・ ・・・ 1 1 0 1 ・・・ 1 1 + 1 1 ・・・ 1 1 ・・・ ・・・ ・・・ 1 0 オペランド1 オペランド2 キャリービット(桁上げ) Add16 a[16] b[16] out[16]
  24. 24. 多ビット加算器 16ビット2進数の加算 ・・・ ・・・ 1 1 0 1 ・・・ 1 1 + 1 1 ・・・ 1 1 ・・・ ・・・ ・・・ 1 0 オペランド1 オペランド2 キャリービット(桁上げ) 2ビットの足し算なので半加算器
  25. 25. 多ビット加算器 多ビット加算器 → 最下位ビットの加算は半加算器 その他ビットの加算は全加算器 Half Adder s c a[0] b[0] out[0] a[1] b[1] Full Adder s c out[1] Full Adder s c out[2]
  26. 26. インクリメンタ インターフェイス 実装 HDLで記述する際、0はfalse、1はtrueとする。 → 00・・・01 = false false ・・・ false true Inc16in[16] out[16] Add16 in[16] out[16] 00・・・01 1入力から2入力 →具体的な値なら増やせる?
  27. 27. ALU 入力 → データビット : x[16]、y[16] 制御ビット : zx、nx、zy、ny、f、no 出力 → out[16]、zr、ng x[16] y[16] out[16] nx zy ny f nozx zr ng ALU
  28. 28. ALU 各制御ビットの役割 (p.36の図を参照) ・ zx → x[16]を00・・・0にする ・ f → f=1ならx[16]+y[16] ・ nx → x[16]を否定(反転) f=0ならAnd(x[16],y[16]) ・ ny → y[16]を00・・・0にする ・ no → zx~fを経た結果を否定(反転) ・ ny → y[16]を否定(反転)
  29. 29. ALU 具体例 zx nx zy ny f no out if zx=1 then x=0 if nx=1 then x = !x if zy=1 then y=0 if ny=1 then y = !y if f=1 then out=x+y else out=x&y if no=1 then out = !out 0 0 1 1 1 0 x-1
  30. 30. zx=0 → x[16]はそのまま f=1 → out = x[16]+y[16] nx=0 → x[16]はそのまま = x[16]+11・・・1 zy=1 → y[16]は00・・・0になる = x – 1 (10進数) ny=1 → y[16]は11・・・1になる zx nx zy ny f no out if zx=1 then x=0 if nx=1 then x = !x if zy=1 then y=0 if ny=1 then y = !y if f=1 then out=x+y else out=x&y if no=1 then out = !out 0 0 1 1 1 0 x-1
  31. 31. ALU Mux16 x false Mux16 And16 Mux16 y false Mux16 Add16 Mux16 Mux16 Or8Way Or8Way Or And16true out zr Andtrue ng zx nx f zy ny
  32. 32. ALU 今回作成したALUができる算術演算は、加算と減算のみである。 → 乗算や除算、浮動小数点演算はOSで実装する。

×