マイクロプロセッサ応用(2)

工学部講義
マイクロプロセッサ応用(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
マイクロプロセッサ応用
レジスタ
東大・坂井