1 / 52

ハードウェア

ハードウェア. デジタル回路. 組み合わせ回路 状態を持たないデジタル回路 Mビットの入力に対して Nビットの出力を与える関数(ブール関数) ビット --- 0または1 順序回路 状態(メモリ)を持つデジタル回路 クロックに同期して状態を遷移させる。 Kビットの状態を持ち、 Mビットの入力に対してNビットを出力. 組み合わせ回路. Nビットの入力. Mビットの出力. 順序回路. Mビットの出力. Nビットの入力. 組み合わせ回路. Kビットの前状態. Kビットの次状態. Kビットの メモリ. 実際にはメモリと 組み合わせ回路は

Download Presentation

ハードウェア

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ハードウェア

  2. デジタル回路 • 組み合わせ回路 • 状態を持たないデジタル回路 • Mビットの入力に対して Nビットの出力を与える関数(ブール関数) • ビット --- 0または1 • 順序回路 • 状態(メモリ)を持つデジタル回路 • クロックに同期して状態を遷移させる。 • Kビットの状態を持ち、 Mビットの入力に対してNビットを出力

  3. 組み合わせ回路 Nビットの入力 Mビットの出力

  4. 順序回路 Mビットの出力 Nビットの入力 組み合わせ回路 Kビットの前状態 Kビットの次状態 Kビットの メモリ 実際にはメモリと 組み合わせ回路は 混在している。 クロック

  5. Metal Oxide Semiconductor MOSトランジスタ NMOS PMOS ゲート ゲート ソース ドレイン ソース ドレイン 金属 酸化膜 N N P P P基盤 N基盤 G G D D S S

  6. MOSトランジスタ NMOS PMOS ー + + ー ー + N N P P - - - + + + - - + + P基盤 N基盤 ホール 電子

  7. Complementary MOS CMOS IN PMOS NMOS G G ー + S D D S OUT インバータ

  8. CMOS + PMOS NMOS G G ー + S D D S ー 電子

  9. CMOS ー PMOS NMOS G G ー + S D D S + ホール

  10. CMOSによるNANDゲート A + Y A B PMOS 真理値表 Y B NMOS +…1 ー…0 -

  11. 組み合わせ回路 • 任意の組み合わせ回路は、原理的には、 NANDゲートを組み合わせて構成できる。 • エンコーダ・デコーダ • アダー • マルチプレクサ • ただし、様々な制限がある。 • 一つのゲートの出力数(ファン・アウト)は 制限される。(入力数はファン・インという。) • ゲートの入力と出力の間には時間遅れがある。

  12. SRフリップフロップ S Q Q R

  13. 同期型SRフリップフロップ S Q Clock Q R

  14. クロック 1 • 順序回路はクロックに同期して動いている。 • 例えば、 • クロックが1のときに入力や前状態を読み込み、 クロックが0のときに一斉に次状態へ遷移する。 0

  15. エッジトリガのフリップフロップ D Q CLK Q Q Q Clock Clock D D Q

  16. 順序回路 • 結局、コンピュータは巨大な順序回路である。 • 特に、CPUは順序回路 • クロックに従って、メモリから命令を読み出し、 それを組み合わせ回路によってデコードし、 その結果に従って計算し、 レジスタへの書き込みなどを行う。 • CPU内の様々なレジスタが CPUの状態を構成する。

  17. 順序回路(再び) Mビットの出力 Nビットの入力 組み合わせ回路 Kビットの前状態 Kビットの次状態 Kビットの メモリ 実際にはメモリと 組み合わせ回路は 混在している。 クロック

  18. Dynamic Random Access Memory DRAM ワード線 DRAMでは、 コンデンサの電荷によって データを記憶し、 MOSで読み書きする。 一定時間内に、 リフレッシュ(読んだデータを そのまま書く)しなければ データが失われる。 ビット線

  19. コンピュータ・アーキテクチャ

  20. コンピュータアーキテクチャ • コンピュータの構成法 • 電子部品をどのように組み合わせて、 コンピュータのハードウェアを構成するか。 • 特に、CPU(Central Processing Unit)の 構成法と機械語命令の設計 • しかし、ソフトウェア • オペレーティングシス • 言語処理系 と独立には語れない。

  21. 平木 計算機の基本アーキテクチャ プログラム メモリ CPU 入出力装置 CPU メモリ 入出力装置 プログラム データ データメモリ フォンノイマンアーキテクチャ ハーバードアーキテクチャ Self Modifying Code は不可能 インデクスレジスタの使用 Self Modifying Code を実現 自己修飾によるプログラム構造の実現

  22. 平木 命令実行の基本形態 命令 命令 命令 命令 メモリ データ 命令 T F R0 条件分岐 R1 R2 レジスタ システムレジスタ 命令 命令

  23. 平木 計算機の内部基本構成 CPU メモリバス メモリ プログラムカウンタ 命令 命令レジスタ 制御回路 レジスタ データ 演算器(群) +-×÷ IO ブリッジ 入出力機器

  24. 平木 機械語命令 • 入力オペランド(メモリ、レジスタ)の指定 (通常、2個以下) • オペランドのアドレス(の一部) • アドレシングモード • 即値 • アドレス修飾(インデクス等) • オペランドに対する操作(演算器の指定等) • 暗黙オペランドに対する操作 • 出力オペランド(メモリ、レジスタ)の指定 (通常1個) • オペランド指定方式の指示 • 次に実行する命令(アドレス)の決定 • 次命令番地 • 無条件に分岐 • 条件分岐(分岐条件の指定と、分岐先の指定) ハードウェアの持つ全能力の操作指定

  25. 平木 命令形式 • オペランド メモリ、レジスタ、システムレジスタ、 即値、スタック、キュー • 命令長 • 固定長 データ基本長 = 命令長ならば、即値に問題 • 可変長 パイプライン設計の困難、命令シーケンス • オペランド数 • 4 入力1、入力2、出力、次アドレス • 3 入力1、入力2、出力   + 分岐命令 • 2 入力1、入出力2 + 分岐命令、MOV命令 • 1 入出力 + アキュムレータ + 分岐命令 • 0 オペランドはスタックトップ  (スタック計算機)

  26. 平木 メモリのアドレス付け • バイトアドレス  → アラインメント問題 • ワードアドレス  → 文字列の扱い • 均一アドレス → 命令オーバーヘッド小 • セグメント拡張アドレス → アドレス指定幅小 • 多彩なアドレシングモード   • アドレス計算に要する命令数の減少 • クリーンなコードの生成

  27. 阿倍 X86概説

  28. 阿倍 Intel X86 プロセッサ • Intel 32 ビット CPU: 386, 486, Pentium, ... の総称 • 8086 (16 ビット)の拡張(仮想記憶、メモリ保護、タスク管理) • CISC アーキテクチャ • 豊富なアドレッシングモードと命令 • 命令のエンコーディングは可変長で複雑 • 貧弱でくせのあるレジスタ群 • 汎用的に使えるレジスタは 6 個 • レジスタアロケーションはシビア • 最も多く使われている CPU • ソフト面の互換性を保った高速化の企業努力 • 386 – 8086 のコードが実行可能 (仮想 86 モード) • 486 –整数演算のパイプライン化、内臓浮動小数点ユニット • Pentium –予測分岐、スーパースカラ • Pentium Pro –命令を単純な命令列に変換、内部的にRISC

  29. 阿倍 Real Protected Virtual 8086 動作モード リアルモード 保護モード Reset • 古い OS 用 • MS-DOS 等 • メモリ保護なし • 16 ビットアドレス空間 • 現代的 OS 用 • Windows, Linux, ... • メモリ保護、仮想記憶 • 32 ビットアドレス空間

  30. 阿倍 保護モードで不可能なこと • 書き込み禁止セグメントへの書き込み • 読み取り禁止コードセグメントの覗き • コードセグメントの変更(自己改変コード) • データセグメントの内容を命令として実行 • セグメント以外の領域へのアクセス • コード、データセグメントをスタックにする

  31. 阿倍 Paging Unit Segment Unit Execution Unit linear address 内部構成(80386) Data Bus Code Prefetch Instruction Decoder Bus Interface 32 bits Address Bus real address real address

  32. 阿倍 レジスタ群 ユーザプログラムが使用 OS が使用 フラグレジスタ システムアドレスレジスタ 命令ポインタ 汎用レジスタ コントロールレジスタ デバッグレジスタ セグメントレジスタ ディスクリプタレジスタ

  33. 阿倍 汎用レジスタの詳細 8ビットサブレジスタ 16ビットサブレジスタ 31 0 15 0 7 15 ESP はスタックポインタ、EBP はフレームポインタとして使われる。

  34. 阿倍 セグメント(1) • プログラムを種類別にまとめた、連続するメモリ • テキストセグメント - プログラムのコード • 通常書き込み禁止 • データセグメント - プログラムが参照するデータ • さらに初期値の有無、書込み禁止属性等で細分 • スタックセグメント - スタック • セグメントのサイズは一定ではない • 仮想記憶機構におけるページの概念とは対照的 • X86 はセグメントとページの両方をサポート • それぞれ Segment Unit、 Paging Unit が処理 • 両方にメモリ保護の概念がある(矛盾したら厳しい方) • 8086 との互換性のため(やむなく)サポートされたが、386 では拡張され、すぐれたメモリ保護機能を提供

  35. 阿倍 + + セグメント(2) 8086 / 80386 (リアルモード) 80386 (保護モード) (16 bits) (16 bits) Descripter Table • address • size • properties << 4 (* 16) Segment Unit (32 bits) (20 bits) Real address (20 bits) Linear address (32 bits)

  36. 阿倍 X86 命令形式の概要 • データ移動 • mov? src, dst (? はデータ型 b,w,l 等の修飾) • src, dst の一方のみメモリオペランド可 • 算術演算 • add? src, dst (dst += src) という2オペランド命令 • src, dst の一方のみメモリオペランド可 • 分岐 • 比較命令 cmp? src1, src2 により src2 – src1の結果をフラグレジスタに記録し、 • 条件分岐 j? dst  (je (==), jne (!=), jl (<), 等)で結果により分岐 • src1, src2 の一方のみメモリオペランド可

  37. 阿倍 データ移動の例 int i, j, *p, v[10]; char c, s[10]; ●i = 123; j = i; movl $123,i movl i,%eax movl %eax,j ●j = *p; movl p,%eax movl (%eax),%ebx ; EBX = *(int*)EAX movl %ebx,j ●j = *(p+1); movl p,%eax movl 4(%eax),%ebx ; EBX = *(int*)(4 + EAX) movl %ebx,j ●j = v[i]; movl i,%eax movl v(,%eax,4),%ebx ; EBX = *(int*)((int)v + EAX * 4) movl %ebx,j ●c = s[i+j*8]; movl i,%eax movl j,%ebx movb s(%eax,%ebx,8),%cl ; CL = *(char*)((int)s + EAX + EBX * 8) movb %cl,c

  38. 阿倍 間接アドレッシングのまとめ • disp(basereg,indexreg,index) • *(Type *)(disp + basereg + indexreg * index) • disp はリンカが解決できる定数式 • index は 1, 2, 4, 8 のいずれか • index の省略は 1 他の省略は 0 • (basereg,indexreg,index) • (basereg,indexreg) • (,indexreg,index) • (basereg)

  39. 阿倍 算術演算の例 int i, j, k, v[10]; unsigned int l, m, n; ●i = j+k; movl j,%eax addl k,%eax ; EAX += k movl %eax,i ●v[i] += j; movl i,%eax movl j,%ebx addl %ebx,v(,%eax,4) ; *(int*)((int)v + EAX * 4) += EBX ●v[i]++; movl i,%eax incl v(,%eax,4) ; *(int*)((int)v + EAX * 4) ++ ●i = j / k; movl j,%eax cdq ; EAX を「64 bit レジスタ」EDX:EAX に符号拡張 idivl k ; 符号付の EDX:EAX /= k 、商=EAX 剰余=EDX movl %eax,i ●l = m % n; movl m,%eax ; EAX を movl $0,%edx; EDX:EAX にゼロ拡張 divl n; 符号なしの EDX:EAX /= n 、商=EAX 剰余=EDX movl %edx, l

  40. 阿倍 分岐の例 int i, j; ●goto L1; jmp L1 ; 無条件ジャンプ ●if (i < j) goto L2; L2: movl i,%eax cmpl j,%eax ; EAX(i) と j の比較をフラグに記録 jl L2 ; 符号付比較で「<」なら L2 へジャンプ ●条件ジャンプ命令のまとめ je == jne != 符号付比較 符号なし比較 jl < jb < jle <= jbe <= jg > ja > jge >= jae >=

  41. 阿倍 関数呼び出し規約 • ESP をスタックポインタとして使用 • EBP をフレームポインタとして使用 • 引数を右から順にスタックにプッシュ • 関数を呼び出す • 呼ばれた関数は EBP,EDI,ESI,EBX を破壊してはならない (Callee Save Registers) • 戻り値を EAX に入れ、呼び出し側に戻る • 最後に呼び出し側がスタックを(引数分)戻す

  42. 阿倍 ESP EBP フレームの構造 EBP からの負のオフセットでアクセス Callee Save レジスタのセーブエリア 呼び出し側がプッシュした戻り番地 呼び出し側がプッシュした関数引数 EBP からの正のオフセットでアクセス

  43. 阿倍 コーリングシーケンス int foo(){return bar(1);} int bar(int x){int i=x; return i;} bar: pushl %edi ; EDI をプッシュ pushl %ebp ; EBP をプッシュ movl %esp,%ebp ; フレームを確保 subl $4,%esp ; i のアロケート movl 12(%ebp),%edi ; EDI = x movl %edi,-4(%ebp) ; i = EDI movl -4(%ebp),%eax ; EAX = i movl %ebp,%esp ; i を破棄 popl %ebp ; EBP をポップ popl %edi ; EDI をポップ ret ; ポップした戻り番地へジャンプ foo: pushl $1 ; 引数をプッシュ call bar ; 戻り番地をプッシュし ; bar へジャンプ addl $4,%esp ; スタックを戻す ret bar’s frame ESP EBP EBP+12

  44. 阿倍 命令エンコーディング(1) 目的 フィールド名 バイト数

  45. 阿倍 命令エンコーディング(2) addl %eax, %ecx => 03C8 opcode=03 mod-reg-r/m=C8(11 001 000) movl (%ebx), %edx => 8B13 opcode=8B mod-reg-r/m=13(00 010 011) addl (%ebx, %ecx, 4), %eax => 03048B opcode=03 mod-reg-r/m=04(00 000 100) SIB=8B(10 001 011) SIB あり

  46. 平木 命令実行の基本フェーズ I • 命令フェッチ(F or IF) • PCに従い、メモリから命令読み出し IRに入れる • 命令デコード(D) • IRにある命令を解釈し、 以下の動作を決定する • オペランド読み出し(R) • 命令に従い、レジスタ等のオペランドを 読み出す • 実行(E or EX) • 演算器、メモリアクセスなどを用いて 命令の動作を実現する • オペランド書き込み(W) D R E W PC: Program Counter IR: Instruction Register (萩谷)

  47. CPUの内部構造 平木

  48. 平木 マイクロプログラム

  49. 平木 仮想記憶とアドレス変換 • ユーザのアドレスを物理的なメモリと分離 • 論理アドレスから物理アドレスへの変換 • ディスクをユーザの記憶空間の一部として利用 • メモリの保護等の属性の利用 • ユーザ内、ユーザ間のメモリの共有 未使用 MMU: Memory Management Unit(萩谷)

  50. 平木 アドレス変換方式 • ページング • メモリ空間を固定サイズ(ページ)に分割 • ページ毎に論理ページアドレスと物理ページアドレスを写像 • PMT(Page Mapping Table)の使用 • セグメンテーション • メモリ空間を、ユーザが規定する可変サイズ(セグメント)に 分割 • セグメント毎に論理アドレスと物理アドレスを写像 • ページ化したセグメント方式 • メモリは固定したページサイズで分割 • ページの集合体をセグメントとして扱う • 多くのプロセッサで実現 • 多段の変換テーブルによる、効率の良い変換表の実現

More Related