計算機システム 第1回 2006/04/22.

Slides:



Advertisements
Similar presentations
1 B10 CPU を作る 1 日目 解説 TA 高田正法
Advertisements

CPU設計と パイプライン.
第3回 並列計算機のアーキテクチャと 並列処理の実際
Chapter11-4(前半) 加藤健.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
CPU実験 第1回中間発表 4班 瀬沼、高橋、津田、富山、張本.
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
Ibaraki Univ. Dept of Electrical & Electronic Eng.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
コンピュータの主役はCPU(Central Processing Unit)
2012年度 計算機システム演習 第4回 白幡 晃一.
App. A アセンブラ、リンカ、 SPIMシミュレータ
2006年度 計算機システム演習 第4回 2005年5月19日.
第4回目 2006/05/08.
ソフトウェアとのインターフェース.
計算機システムⅡ 命令セットアーキテクチャ
計算機システム ハードウェア編(第3回) ~ ノイマン型コンピュータ ~.
プログラムはなぜ動くのか.
高性能コンピューティング論2 第1回 ガイダンス
Ibaraki Univ. Dept of Electrical & Electronic Eng.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
「ソフトウェアのしくみ」.
第7回 2006/6/12.
第3回目 2006/05/01.
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
Advanced Computer Architecture
プログラミング言語入門 手続き型言語としてのJava
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
勉強会その1    2016/4/ 分35秒 コンピュータアーキテクチャとは? コンピュータの構成 命令の実行.
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
計算機システム 第2回 2011/05/02(月) 「コンピュータ・アーキテクチャへのいざない」
情報リテラシー2014 part 5/5 (亀田担当分最終回)
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
プログラミング言語入門.
Advanced Computer Architecture
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
第6回 6/4/2011 状態遷移回路とシングルサイクルCPU設計
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
ディジタル回路の設計と CADによるシステム設計
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
08. メモリ非曖昧化 五島 正裕.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
09. メモリ・ディスアンビギュエーション 五島 正裕.
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
アルゴリズムとデータ構造1 2009年6月15日
コンピュータアーキテクチャ 第 4 回.
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
アルゴリズムとデータ構造 2010年6月17日
情報システム基盤学基礎1 コンピュータアーキテクチャ編
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
1.2 言語処理の諸観点 (1)言語処理の利用分野
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

計算機システム 第1回 2006/04/22

第一章

コンピュータアーキテクチャへの入門 急激に進歩している領域: 真空管 -> トランジスタ (シリコン)-> IC -> VLSI 1.5 年で倍増 (Moore’s Law) メモリ容量 プロセッサ速度 (テクノロジと構成両方の進歩) 現状で5000万~1億トランジスタ/chip, もうすぐ10億トランジスタへ、 何を学ぶか: コンピュータの動作の原理 性能をどう評価するか (または、間違ったやり方) 現代のプロセッサデザインに関して (caches, pipelines, SuperScalar…) どうしてこの授業を受けるの? 自分を「情報科学者」と呼びたいから 他の人々が使えるソフトを使いたい(ハードウェアの知識での性能要求) 将来、偉くなったときに必要な知識

コンピュータとは? c.f. 細胞と人間 部品: 入力 input (mouse, keyboard) 出力 output (display, printer) メモリ memory (disk drives, DRAM, SRAM, CD) ネットワーク network 本講義での着目点: プロセッサ processor (データパスdatapath とコントロール control) 数千万~数億トランジスタによる実装 個々のトランジスタを眺めるだけではわからない c.f. 細胞と人間

計算機システムの俯瞰図 アプリケーション アルゴリズム 高級言語 コンパイラ (クラス)ライブラリ オペレーティングシステム アセンブラ・ローダ 機械語・ISA I/Oデバイス マイクロアーキテクチャ 物理実装

シリコンダイ 20cm-30cm シリコン「ウェーハー」 PCのCPUは60mm2から600mm2まで 多くは80mm2から200mm2程度 面積が少ない⇒ 歩留まりが高い とれる個数が多い 欠損確立が少ない

物理的なプロセッサの構成 数十万~数億トランジスタ シリコンウェーハー 例: MIPS R4400

必要なもの: 抽象化 高級言語 C, Java アセンブラ X86, MIPS 機械語 X86, MIPS 情報科学の根元 より深くなればなるほど、より情報量が多くなる 抽象化により、不必要な情報を削減し、 全体を見渡すことができるようになる 右はプログラム言語が実行にいたるまでの さまざまな抽象化のレベル 何が見えてくるか? 高級言語 C, Java アセンブラ X86, MIPS 機械語 X86, MIPS

抽象化されたMIPS R4400の構成

命令セットアーキテクチャ Instruction Set Architecture 非常に重要な抽象化 ハードウェアと下位のレベルのソフトウェアとのInterface マシンに対する命令や、マシン語のビットパターンを標準化する 良い点: 同じアーキテクチャの異なる実装が可能 例Intel i386, Pentium, Pentium Pro, Pentium II, PIII, P4 悪い点: 時たま、革新を妨げることがある 本当?: バイナリ互換性はもっとも重要? 現代の命令セットアーキテクチャ instruction set architectures: IA32(Pentium), x64 (Pentium4, Athlon) PowerPC, DEC Alpha, MIPS, SPARC, HP PA-RISC, IA64,. ARM, …

様々x86 ISAのCPU 486 Pentium MMX Pentium VI AMD Opteron Pentium III

今後の予定 性能の役割 Performance issues (2) 命令: マシンの言葉 A specific instruction set architecture (3) コンピュータにおける演算とALU Arithmetic and how to build an ALU (4) 命令をいかに実行する?プロセッサ Constructing a processor to execute our instructions (5) パイプラインを用いた性能向上 Pipelining to improve performance (6) メモリ: キャッシュと仮想メモリ Memory: caches and virtual memory (7) 入出力 I/O (8) 参考書 Patterson and Hennesy Computer Organization and Design: The Hardware/Software Interface Morgan Kaufmann Publishers, 1997 (コンピュータの構成と設計(上下)第二版、成田(訳)、日経BP社)

機械語とは: 機械をプログラミングする「言葉」 Java, Cなどの高レベルの言語と比較して、より「原始的」 例: 複雑な制御構造 (forやメソッド呼び出し)、データ構造などはない 個々の機能も限定されている e.g., MIPS の算術命令 => 32bit整数, 64bit 実数 本授業では、MIPSの命令アーキテクチャを対象とする 1980代から開発されている他のISAと類似(RISC) DLXとほぼ同じ NEC, 任天堂, Silicon Graphics, Sony (PlayStation) デザインゴール: 性能の最大化、コストの最小化, デザインタイムの高速化

MIPS 算術命令 全ての命令は 3 つのオペランド(引数)を持つ 引数の順序は固定 (destination first) 命令 デスティネーション, ソース1, ソース2 Example: C code: A = B + C MIPS code: add $s0, $s1, $s2 (コンパイラーによって変数に割り付け) レジスタ指定 Q: メモリや、他のオペランド指定は可能?

MIPS 算術命令 デザインの原則: 単純化は規則性を要求する. Why? これによって、一見単純な操作が複雑になるが... C code: A = B + C + D; E = F - A; MIPS code: add $t0, $s1, $s2 add $s0, $t0, $s3 sub $s4, $s5, $s0 オペランドはレジスタ(32個)でなくてはならない デザインの原則: 小さいものは速い. Why?

レジスタ とメモリ 算術命令のオペランドはレジスタでなくてはならない レジスタ数は32本 コンパイラがレジスタを変数に割り付ける 変数が32個以上のプログラムはどうする? Processor プロセッサ I/O 入出力 Control 制御 Datapath データパス Memory メモリ Input 入力 Output 出力

メモリの構成 番地 巨大な一次元の配列とみなせる。要素のそれぞれのメモリセルには番地が振ってある。 MIPSでは 32-bit = 約40億番地 メモリのアドレスが配列へのインデックスとなる “Byte addressing (バイトアドレッシング)” メモリはバイト(8bit)単位で番地が振られる c.f., ワードアドレッシング: ワード(32bit)単位で番地 8 bits of data 1 8 bits of data 2 8 bits of data 3 8 bits of data 4 8 bits of data 5 8 bits of data 6 8 bits of data ...

メモリの構成(続き) バイトは良い単位だが(ASCII英文字など), しかし、他のデータは “word”(ワード)単位で扱われる MIPSでは, ワードは32bit、つまり4バイト. 232 bytes with byte addresses from 0 to 232-1 = 230 words with byte addresses 0, 4, 8, ... 232-4 ワードはalign (整列)されている Q: ワードの下位2bitの値は? 32 bits of data 4 32 bits of data レジスタは 32 bitのデータを保持 8 32 bits of data 12 32 bits of data ...

命令: 算術命令、ロードストア命令 Load/Store (ロードストア)命令 :メモリとレジスタの間のワードデータの転送 例: C code: A[10] = h + A[8]; MIPS code: lw $t0, 32($s3) // 32 = 4 * 8 add $t0, $s2, $t0 sw $t0, 40($s3) // $s3にAの番地 Store word はデスティネーションが最後に来ることに注意 算術命令はレジスタがオペランド メモリはオペランドにならない! 例のように、メモリに対する算術演算を行いたい場合は、一度レジスタにロードして、操作後、ストアしなくてはならない

最初の例 どのようにコードが対応するか? swap(int v[], int k); { int temp; temp = v[k] v[k] = v[k+1]; v[k+1] = temp; } k → $5 v → $4 temp → $15 $2は? swap: muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31

今まで学んだこと: MIPS — ロードストアの対象はワードだが、アドレッシングはバイト単位 — 算術命令のオペランドはレジスタのみ 典型的なRISC (Reduced Instruction Set Computer) アーキテクチャ (c.f. CISC (Complex Instruction Set Computer)) 命令 意味 add $s1, $s2, $s3 $s1 = $s2 + $s3 sub $s1, $s2, $s3 $s1 = $s2 – $s3 lw $s1, 100($s2) $s1 = Memory[$s2+100] sw $s1, 100($s2) Memory[$s2+100] = $s1

機械語 それぞれの機械命令は、レジスタ同様、1ワード(32bit)長 Example: add $t0, $s1, $s2 c.f., CISCアーキテクチャ→ 命令は可変長 命令フォーマットの例 (r形式): 000000 10001 10010 01000 00000 100000 op rs rt rd shamt funct 命令 ソース1 ソース2 デスティネーション それぞれのビットフィールドの名前の意味するところは? Board work: Binary Numbers

機械語(続き) Load-word (lw)と store-word(sw)命令を考えてみよう 均一性の原則からは、どのようなデザインが芽生える? メモリ番地の指定が大変難しくなる! 新原則: 「良いデザインには妥協も必要だ」 新しい命令形式 データ転送のためのI形式 例: lw $t0, 32($s2) 35 18 9 32 op rs rt 16 bit number 妥協点はどこに?

Stored Program 方式の概念 Q1: von Neumannアーキテクチャでないものは? 命令もビット列で表現できる プログラムもメモリに格納される — データのように読み書きが可能 命令サイクル (Fetch & Execute) 命令はメモリからフェッチされて、特殊なレジスタに格納される レジスタ内のビットが命令の実行を制御する(命令デコード+実行) 次の命令をフェッチし、続ける 特殊レジスタ Program Counter (PC) の存在 Q1: von Neumannアーキテクチャでないものは? Processor Memory メモリには、データのみならず、OSや コンパイラやアプリケーションなどが 格納されている。 Q2: メモリ内のプログラムとデータはどのように区別(可能)?

Control (制御命令) 判断を行うための命令 control flow (制御の流れ)を変更する i.e., 次に実行する命令を変更する MIPS 条件分岐命令 →二つのオペランドの比較: bne $t0, $t1, Label // $t0 != $t1 beq $t0, $t1, Label // $t0 == $t1 Example: if (i==j) h = i + j; bne $s0, $s1, Label add $s3, $s0, $s1 Label: ....

Control (続き) MIPS 無条件分岐命令: j label 例 if--then--else: if (i!=j) beq $s4, $s5, Lab1 h=i+j; add $s3, $s4, $s5 else j Lab2 h=i-j; Lab1: sub $s3, $s4, $s5 Lab2: ... Q: While文はどのように? while (i!=j) Lab1: beq $s4, $s5, Lab2 i=i+j; add $s4, $s4, $s5 j Lab1 Lab2: ...

Control Flow (制御の流れ) Board work: Binary Numbers 等しいかは: beq, bne, だが、blt 「値が小さければブランチ」は? 新命令 slt (set if less then): if $s1 < $s2 then $t0 = 1 slt $t0, $s1, $s2 else $t0 = 0 この命令を使って blt命令を実現可 “blt $s1, $s2, Label” — これによって一般的な制御構造が記述可能 アセンブラは一時レジスタを一本要求することに注意 — レジスタの使用に関するConvention (慣例)がある Q: blt を実現せよ。ただし、一時レジスタを$t0とせよ。 Board work: Binary Numbers 2

今まで学んだこと: Instruction Meaning add $s1,$s2,$s3 $s1 = $s2 + $s3 sub $s1,$s2,$s3 $s1 = $s2 – $s3 lw $s1,100($s2) $s1 = Memory[$s2+100] sw $s1,100($s2) Memory[$s2+100] = $s1 bne $s4,$s5,L もし $s4 != $s5ならば次の命令は Label beq $s4,$s5,L もし $s4 = $s5ならば次の命令は Label j Label 次の命令は Label 命令形式: R I J op rs rt rd shamt funct op rs rt 16 bit address op 26 bit address