工学部講義 マイクロプロセッサ応用(2) 坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科 • はじめに • 講義概要 • RISCとCISC • さまざまな命令 マイクロプロセッサ応用 東大・坂井 はじめに 本講義の目的 – マイクロプロセッサのハード・ソフトの基本を実践的に学習する – 前半:講義 • 坂井 (ソフトの基本:機械語プログラミング) • 三田先生(ハードの基本) – 後半:実習 時間・場所:火曜日 8:30 - 10:00、3-31 ホームページ(坂井分:ダウンロード可能) – url: http://www.mtl.t.u-tokyo.ac.jp/~sakai/micro/ 教科書・参考書 – Patterson and Hennessy: Computer Organization and Design:The Hardware/Software Interface 2nd Ed. (邦訳 「コンピュータの構成と設計」(第2版)日経BP) マイクロプロセッサ応用 東大・坂井 講義の概要と予定(坂井分) 1.マイクロプロセッサのモデルと命令 はじめに、プロセッサのモデル、命令とは何か、命令セット、命令 型式、フォンノイマン計算機とその動作、機械語とアセンブリ言語 2.命令とプログラム RISCとCISC、算術論理演算命令、データ移動命令、ジャンプと ブランチ、スタック、サブルーチンコール 3.アドレス指定方式 4.入出力、例外処理等 5.課題出題 2月15日: 坂井分課題レポート提出期限(仮) マイクロプロセッサ応用 東大・坂井 2.命令とプログラム 復習 – 命令:計算機の基本動作を指示するもの – プログラム: 命令を並べてひとまとまりの仕 事を指示するもの – 命令セット: ある計算機で実行可能なすべて の命令の集合 • 計算機は「命令セット」によって特徴づけられる マイクロプロセッサ応用 東大・坂井 2.1 RISCとCISC マイクロプロセッサの分類 – RISC: Reduced Instruction Set Computer – CISC: Complex Instruction Set Computer RISC CISC 命令数 少ない 多い 命令形式 一語固定長 可変長 個々の命令動作 (アドレシングモード) 単純 複雑 レジスタ数 多い 少ない 例 マイクロプロセッサ応用 Sun Sparc MIPS R10000 IBM PowerPC Comaq Alpha Intel X86 Motorola M68000 東大・坂井 RISC vs. CISC 歴史的な考察 – CISCが先にあった(1960年代頃~) • レジスタは高価 • 命令の種類(特にアドレッシングの種類)は多数あればユー ザの要求に応えられると考えられた – CISCへの反省 • じっさいの計算では、ほとんどが単純な命令 • 複雑な命令 – コンパイラが出力するのが難しい – 単純な命令の組合せで実現可能 – RISCの発案と展開 • 1980年代の潮流: Cocke (IBM, Turing Award Winner), Patterson(UCB), Hennessy(Stanford)ら • 「RISCはCISCより速い」は真実! • IntelにおいてもCISC命令をRISCに解釈し直して実行している マイクロプロセッサ応用 東大・坂井 2.2 命令の分類 算術演算命令 – 加算、減算、積算、除算、算術シフト 論理演算命令 – 論理和、論理積、論理シフト データ転送命令 – ロード(メモリ→レジスタ)、ストア(レジスタ→メモリ) 条件分岐命令 – ~の条件下で分岐(~: =、>、<、≦、≧、≠) 無条件ジャンプ命令 マイクロプロセッサ応用 東大・坂井 2.3 算術演算命令 代表的な算術演算命令 – 加算 • add, addu(add unsigned) • addi(add immdediate), addiu(add imm. unsign.) – 減算 • sub, subu – 積算 • mult, multu – 除算 • div, divu – 算術シフト • sla(shift left arithmetic), sra(shift right arithmetic) マイクロプロセッサ応用 東大・坂井 算術演算命令の動作 rd = rs + rtの場合: レジスタ同士の加算 – アセンブリ言語の記述 • add rd rs rt IR: Instructioin Register add rs rt rd レジスタ rs + 制御の流れ ALU rd rt データの流れ マイクロプロセッサ応用 東大・坂井 算術演算命令の動作(続き) 例外 – 正常に結果が出ないとき(に起こす割り込み) – 算術演算命令で起こる例外 • オーバフロー: 結果の絶対値が大きすぎる • 0除算: 除数が0 – この他の例外 • 未定義命令、アンダーフロー(浮動小数点命令で 結果が小さすぎるとき)等 マイクロプロセッサ応用 東大・坂井 2.4 論理演算命令 代表的な論理演算命令 – 論理積 • and, andi (and immediate) – 論理和 • or, ori (or immediate) – 論理シフト • sll (shift left logical), srl (shift right logical) – ビット列操作 • bsop (bit string operation) 論理演算命令の動作 – 算術演算命令の動作と同様 マイクロプロセッサ応用 東大・坂井 2.5 データ転送命令 代表的なデータ転送命令 – メモリからレジスタへ • lw (load word), lh (load half word), lb (load byte) • li (load immediate) – レジスタからメモリへ • sw (store word), sh (store half word), sb (store byte) • si (store immediate) – レジスタとメモリの間のデータ交換 • swp (swapp) – 入出力機器からの入力命令 • in – 入出力機器への出力命令 • out (注)入出力機器をメモリマップにして、特別の命令を設 けないものもある 東大・坂井 マイクロプロセッサ応用 データ転送命令の動作 rd = lw rd from dpl(rs) の場合: 1語ロード – アセンブリ言語の記述 • lw rd dpl(rs) IR: Instructioin Register lw rs rd メモリ dpl + rs 制御の流れ rd アドレスの流れ データの流れ レジスタ マイクロプロセッサ応用 東大・坂井 2.6 条件分岐命令 代表的な条件分岐命令 – 条件判定→ジャンプ • beq(branch on equal), bne(branch on not equal) • blt(branch on less than), ble(branch on less than or equal) – 条件設定: 条件設定後分岐命令とともに用いる • (算術演算命令による条件設定) • slt(set on less than), slti(set less than imm.) • sltu(set less than unsigned), sltiu(set less than imm. uns.) – 条件設定後分岐 • jpcc(jump on condition code) マイクロプロセッサ応用 東大・坂井 条件分岐命令の動作 beq rs rt dpl の場合: 等しいときPC相対分岐 IR: Instructioin Register beq rs rt 1 dpl Y rs 制御の流れ N + =? rt アドレスの流れ PC: Program Counter データの流れ レジスタ マイクロプロセッサ応用 instruction address 東大・坂井 2.7 無条件ジャンプ命令 代表的な無条件ジャンプ命令 – ジャンプ • j (jump), jr (jump register) – サブルーチンジャンプ • jal (jump and link), trap 無条件ジャンプ命令の動作:jr rs の場合 jr rs IR: Instructioin Register rs 制御の流れ PC: Program Counter アドレスの流れ instruction address マイクロプロセッサ応用 レジスタ 東大・坂井
© Copyright 2024 ExpyDoc