コンピュータハードウェア (4) 鈴木健一 東北工業大学情報通信工学科 http://www.ca.rsc.tohtech.ac.jp/~suzuki/lecture/hw.html May 22, 2015 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 1 / 24 クロック信号に関する補足 1 CLK (または 1) t デューティ比 = t T デューティ比 = 50% T クロック周期の逆数 = クロック周波数 t T 鈴木健一 (東北工大) デューティ比 コンピュータハードウェア (4) May 22, 2015 2 / 24 命令表現形式 (1) オペコード: どんな処理をするか. (cf: のこぎり,ドリル,ハンダごて, ...) オペランド: 何に対して,処理を施すか. (cf: 木の板,電線,アルミ板,しいたけ, ...) 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 3 / 24 命令表現形式 (2) オペランドの種類 ソース (source) オペランド: 処理の入力 デスティネーション (destination) オペランド: 処理の出力 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 4 / 24 命令表現形式 (3) 命令の一般形 d ← op src1 d ← src1 op src2 ソースオペランドが 1 個の場合 ソースオペランドが 2 個の場合 d: デスティネーションオペランド src1 と src2: ソースオペランド op: 演算 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 5 / 24 この講義で使う命令形式 プロセッサの設計者が決定する → 設計方針によってさまざま 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 6 / 24 命令フィールド 操作の種類 → op フィールドのビット数 レジスタの本数 → rs, rt, rd フィールドのビット数 命令長 → ワード長 (2 ワード以上を許すこともある) 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 7 / 24 アセンブリ言語 命令の表現を人間に分かりやすい形で記述 命令と 1 対 1 に対応 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 8 / 24 命令セット 命令セット: そのプロセッサで使用できる命令の集合 この講義で使用する命令セットを,算術論理演算命令,データ移動 命令,分岐命令ごとに見ていく 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 9 / 24 命令セット: 算術論理演算命令 (1) 算術演算命令 R型 演算命令 加算 add 減算 sub 乗算 mul 除算 div 剰余 rem abs 絶対値 算術左シフト sla 算術右シフト sra I型 addi subi muli divi remi —– —– —– 論理演算命令 演算命令 R型 論理積 and or 論理和 否定 not NOR nor NAND nand XOR xor eq 同値 論理左シフト sll 論理右シフト srl I型 andi ori —– nori nandi xori eqi —– —– このプロセッサでは,メモリにあるデータについての算術論理演算 を禁止 → A 型の算術論理演算命令は,ない 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 10 / 24 命令セット: 算術論理演算命令 (2) 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 11 / 24 命令セット: 算術論理演算命令 (3) 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 12 / 24 シフト命令についての補足 論理シフトと算術シフト (教科書 p.37) 左シフト (sla と sll) は同じ動作 右シフトは左から入ってくるビットが異なる srl (論理右シフト): 左から 0 が入る sra (算術右シフト): 左から 符号ビットが入る ←シフトによって正負が変わらないように AUX 部分 (11 ビット) をシフト桁数の指定に使用 R 型命令にもかかわらず,シフト桁数を I 型のような即値で指定 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 13 / 24 命令セット: データ移動命令 (1) レジスタ間の移動については addi rs, rt, 0 を使えばよい メモリ ↔ レジスタ間の移動: ロード/ストア命令 移動量 64 ビット 32 ビット 16 ビット 8 ビット 鈴木健一 (東北工大) メモリ→レジスタ ld load double word lw load word lh load half word lb load byte レジスタ→メモリ sd store double word sw store word sh store half word sb store byte コンピュータハードウェア (4) May 22, 2015 14 / 24 命令セット: データ移動命令 (2) 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 15 / 24 命令セット: データ移動命令 (3) 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 16 / 24 命令セット: データ移動命令 (4) 問題: ロード/ストア命令では,dpl と rs を加算している. dpl にメモリアドレスを直接入れておいたほうが便利では? 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 17 / 24 命令セット: 分岐命令 (1) 命令 j jr jal 意味 jump jump register jump and link 命令 beq 意味 branch on equal branch on not equal branch on less than branch on less than or eq. bne blt ble 鈴木健一 (東北工大) 無条件分岐命令 形式 アセンブラ 動作 A j addr pc ← addr R jr rs pc ← (rs) A jal addr r31 ← (pc) + 4; pc ← addr 条件分岐命令 形式 アセンブラ I beq rs,rt,dpl I bne rs,rt,dpl I blt rs,rt,dpl I ble rs,rt,dpl コンピュータハードウェア (4) 動作 rs=rt ならば, pc=(pc)+4+dpl rs 6= rt ならば pc=(pc)+4+dpl rs < rt ならば pc=(pc)+4+dpl rs ≤ rt ならば pc=(pc)+4+dpl May 22, 2015 18 / 24 命令セット: 分岐命令 (2) 無条件分岐命令の実行例 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 19 / 24 命令セット: 分岐命令 (2) 条件分岐命令の実行例 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 20 / 24 命令セット: その他の命令 命令 halt 意味 Halt the processor 形式 R アセンブラ halt 動作 実行停止 これがないと,プログラムの終わりをプロセッサが理解できない 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 21 / 24 命令セット: その他の条件 レジスタ本数: 32 データ語長: 32 ビット (=4 バイト) メモリアドレス幅: 32 ビット 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 22 / 24 演習 次のプログラムを書け. 1 レジスタ R1 に値 0 をセットするプログラム 2 レジスタ R1 に値 0x1234 をセットするプログラム 3 レジスタ R1 に値 0x98765432 をセットするプログラム 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 23 / 24 まとめ 命令の表現形式 オペコード オペランド → ソースオペランド → デスティネーションオペランド この講義で使う命令形式 → 命令セット 算術論理演算命令 データ移動命令 分岐命令 その他の命令 鈴木健一 (東北工大) コンピュータハードウェア (4) May 22, 2015 24 / 24
© Copyright 2024 ExpyDoc