計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章

Slides:



Advertisements
Similar presentations
G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
Advertisements

天野 コンピュータ基礎  入出力
CPU設計と パイプライン.
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第2週目
2012年度 計算機システム演習 第4回 白幡 晃一.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
計算機構成 第7回 サブルーチンコールとスタック テキストp85-90
App. A アセンブラ、リンカ、 SPIMシミュレータ
2006年度 計算機システム演習 第4回 2005年5月19日.
ソフトウェアとのインターフェース.
コンピュータ工学基礎 パイプラインハザード テキスト9章 115~124
演算回路 <例題> 問題:1+2=3を計算する アドレス 内容 データ プログラム 10 11 12 ・ 19 1 2 (答え) 20 21
プロセッサ設計教育のための 命令セット・スーパースカラシミュレータの試作と評価
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).
計算機構成 第9回 POCOの性能評価と論理合成 テキスト7章
補数 n:桁数、b:基数 bの補数 bn-x 253(10進数)の10の補数は、 =747
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
TAL : Typed Assembly Language について
プロジェクト実習 LSIの設計と実現 パイプライン実行とハザード.
アドバンスト コンピュータ アーキテクチャ RISC と 命令パイプライン
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
条件分岐と繰り返し.
地域情報学演習 VBAプログラミング 第3回 2017年10月24日
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
Advanced Computer Architecture
Advanced Computer Architecture
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
VBで始めるプログラミング こんにちは、世界。 /28 NARC.
計算機構成 第2回 ALUと組み合わせ回路の記述
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
計算機構成 第8回 POCOの構造とVerilog記述 テキスト第5章-第6章
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
計算機構成 第5回 RISCの命令セットアーキテクチャ テキスト第4章
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
プログラムの基本構造と 構造化チャート(PAD)
コンピュータアーキテクチャ 第 10 回.
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
データの表現 2進数 0と1を使う。 基数(基準になる数)が2. 101(2) かっこで2進数と示すことがある。
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 5 回.
プログラムの開発手順 1.プログラム設計(仕様の決定) 2.コーディング(ソースファイルの作成) 3.アセンブル(オブジェクトファイル
言語プロセッサ 第12日目 平成20年1月9日.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
6.3 インタプリタ (1)インタプリタ(interpreter)とは
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章 計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章 情報工学科 天野英晴

POCOの構成 Y S A B + 1 ext ext0 PC rwe … … 命令メモリ データメモリ we 2:0 00 THB 01 ADD 10 A B alu_bsel comsel + 00 01 10 1 ext ext0 7:0 rf_a rf_b aadr 10:8 badr PC cadr rf_c rwe rf_csel 1 7:5 ddatain idatain iaddr … … ddataout daddr 命令メモリ データメモリ we

POCOの条件分岐命令 BEZ rx,X: if(rx=0) PC←PC+1+X 10000 ddd XXXXXXXX BNZ rx,X: if(rx≠0) PC←PC+1+X 10001 ddd XXXXXXXX PC相対指定 命令の位置+1を起点としてX分命令を飛び越す 8ビットのフィールド→ -128から127まで飛べる 局所性(Locality)があるので多くの場合大丈夫 プログラムが再配置可能(Relocatable)になる

PC相対指定による分岐 (掛け算のプログラムの例) LDIU r0,#2 LD r1,(r0)    r1 ← 2番地の内容 LDIU r0,#3 LD r2,(r0)    r2 ←3番地の内容 LDIU r3,#0    r3は答が入るので0に初期化 ADD r3,r1    r3にr1を足しこむ ADDI r2,#-1   r2から1を引く BNZ r2, -3   0でなければループ LDIU r0,#0 ST r3,(r0) BEZ r2,-1

アセンブラshapaを使おう LDIU r0,#2 LD r1,(r0) r1 ← 2番地の内容 LDIU r0,#3 LDIU r3,#0    r3は答が入るので0に初期化 loop: ADD r3,r1    r3にr1を足しこむ ADDI r2,#-1   r2から1を引く BNZ r2, loop   0でなければループ LDIU r0,#0 ST r3,(r0) end: BEZ r2,end ./shapa mult.asm –o imem.datで機械語に変換してくれる rubyで書かれている 命令の付加が簡単 (poco.rbを修正)

大小比較と分岐 BPL rd, X if(rd>=0) pc ← pc+1+X 10010 ddd XXXXXXXX Branch Plus rdが0以上ならば飛ぶ BMI rd,X if(rd<0) pc ← pc+1+X 10011 ddd XXXXXXXX Branch Minus rdがマイナスならば飛ぶ 実装は簡単だが引き算をしてレジスタを破壊しないと分岐ができない

最大値を選ぶプログラム例 LDIU r0,#0 ポインタは0 LDIU r3,#0 r3は暫定チャンピオン loop: LD r2,(r0) r2は挑戦者 SUB r2,r3 引いてみる BMI r2,skip チャンピオンが勝てばスキップ ADD r3,r2 足し戻すことでr3とr2が交換される skip: ADDI r0,#1 ポインタを進める ADDI r4,#-1 カウンタを減らす BNZ r4,loop 8個調べたらおしまい end: BEZ r4,end

一般的な分岐の制御法(POCOでは使えないので注意!) Flagを使う方法 Flag:演算結果の性質を示す小規模な専用レジスタ Zero Flag 演算の結果が0ならば1(セット:立つ) Minus Flag 演算の結果がマイナスならば1(立つ) Carry Flag 演算の結果が桁溢れならば1(立つ) 分岐はFlagをチェックして行う BZ Zero Flagが1ならば飛ぶ など 比較命令(Compare, CMP) 比較してFlagのみをセット→レジスタを破壊しない 〇実装が簡単で効率が良い ×命令コードの入れ替えが難しい Flagセットオプションやグループ化で改善する Compare and Branch 比較してその結果により分岐する 〇Flagが必要なく、命令コードの入れ換えが可能 ×一命令が複雑になる

JumpとJR JMP X pc ← pc+1+X Jump 10100 XXXXXXXXXXX レジスタ指定がない分遠くに飛べる -1024~+1023 JR rd pc←rd Jump Register 00000 ddd --- 01010 絶対指定 16ビットのアドレス空間のどこにでも飛べる サブルーチンコールのリターン(来週) テーブルジャンプ

分岐命令のVerilog記述 always @(posedge clk or negedge rst_n) begin if(!rst_n) pc <= 0; else if ((bez_op & rf_a == 16’b0) | (bnz_op & rf_a != 16’b0) | (bpl_op & ~rf_a[15]) | (bmi_op & rf_a[15])) pc<=pc+{{8{imm[7]}},imm}+1; else if (jmp_op) pc <= pc +{{5{idatain[10]}},idatain[10:0]}}+1; else if(jr_op) pc <= rf_a; else pc<=pc+1; end

NOP MV rd,rs rd← rs AND rd,rs rd← rd AND rs OR rd,rs rd← rd OR rs 00000------00000 MV rd,rs rd← rs 00000dddsss00001 AND rd,rs rd← rd AND rs 00000dddsss00010 OR rd,rs rd← rd OR rs 00000dddsss00011 SL rd rd← rd<<1 00000ddd---00100 SR rd rd← rd>>1 00000ddd---00101 ADD rd,rs rd← rd + rs 00000dddsss00110 SUB rd,rs rd← rd - rs 00000dddsss00111 ST rd,(ra) (ra)← rd 00000dddaaa01000 LD rd,(ra) rd← (ra) 00000dddaaa01001 JR rd pc ← rd 00000ddd---01010

LDI rd,#X rd← X(符号拡張) LDIU rd,rs rd← X(ゼロ拡張) ADDI rd,#X rd←rd+X(符号拡張) 01000dddXXXXXXXX LDIU rd,rs rd← X(ゼロ拡張) 01001dddXXXXXXXX ADDI rd,#X rd←rd+X(符号拡張) 01100dddXXXXXXXX ADDIU rd,#X rd←rd+X(ゼロ拡張) 01101dddXXXXXXXX LDHI rd,#X rd←{X,0} 01010dddXXXXXXXX BEZ rd,X if(rd=0) pc←pc+X+1 10000dddXXXXXXXX BNZ rd,X if(rd≠0) pc←pc+X+1 10001dddXXXXXXXX BPL rd,X if(rd>=0) pc←pc+X+1 10010dddXXXXXXXX BMI rd,X if(rd<0) pc←pc+X+1 10011dddXXXXXXXX

J型命令一覧 JMP #X pc←pc+X+1 10100XXXXXXXXXXX

演習 1.1番地に入っているXについて 1+2+3+…+Xを計算するプログラムを書け 2.0から並んでいる8個の数字の総和を求めて8番地に書き込むプログラムを書け 3.poco1.vにBMI、BPLを付け加え、0から並んでいる8個の数字の中で最小の数を見つけるプログラムを書け