コンピュータアーキテクチャ 第 2 回.

Slides:



Advertisements
Similar presentations
CPU設計と パイプライン.
Advertisements

2006/10/26 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
計算機システムⅡ 主記憶装置とALU,レジスタの制御
情報システム基盤学基礎1 コンピュータアーキテクチャ編 第2回 命令
Ibaraki Univ. Dept of Electrical & Electronic Eng.
情報工学基礎(改訂版) 岡崎裕之.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
2012年度 計算機システム演習 第4回 白幡 晃一.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
App. A アセンブラ、リンカ、 SPIMシミュレータ
計算機システムⅡ 命令セットアーキテクチャ
演算回路 <例題> 問題:1+2=3を計算する アドレス 内容 データ プログラム 10 11 12 ・ 19 1 2 (答え) 20 21
プロセッサ設計教育のための 命令セット・スーパースカラシミュレータの試作と評価
  【事例演習6】  数式インタプリタ      解 説     “インタプリタの基本的な仕組み”.
プログラムはなぜ動くのか.
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
中島 克人 プロセッサと機械語 2年次前期 (第1回) 中島 克人
プログラミング言語入門 手続き型言語としてのJava
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
情報リテラシー2014 part 5/5 (亀田担当分最終回)
条件分岐と繰り返し.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
プログラミング言語入門.
情報の授業 サイバースペースに飛び込もう  - CPU/機械語と二進数 – ・コンピュータはどうして動くの ・CPUの構造とプログラム ・どうして二進数を勉強するの 映画やアニメで近未来のサイバースペースを扱っているものは、何か1と0がいっぱいある画面が出てきませんか。実はこの0と1だけがコンピュータの中の世界にあるものです。
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
ディジタル回路の設計と CADによるシステム設計
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンピュータアーキテクチャ 第 11 回.
コンピュータアーキテクチャ 第 10 回.
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 5 回.
プログラムの開発手順 1.プログラム設計(仕様の決定) 2.コーディング(ソースファイルの作成) 3.アセンブル(オブジェクトファイル
コンピュータアーキテクチャ 第 11 回.
言語プロセッサ 第12日目 平成20年1月9日.
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
コンパイラ 第12回 実行時環境 ― 変数と関数 ― 38号館4階N-411 内線5459
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
6.5 最終コード生成 (1)コードの形式 ①絶対2進コード(AB : absolute binary) 命令後のオペランドが絶対番地指定。
Presentation transcript:

コンピュータアーキテクチャ 第 2 回

COMET II の機械語(マシン語,命令語) 命令語長: * 命令数: 38 個 種類: 8 種類 (1)ロード,ストア,ロードアドレス命令 (2)算術,論理演算命令 (3)比較演算命令 (4)シフト演算命令 (5)分岐命令 (6)スタック操作命令 (7)コール,リターン命令 (8)その他(ノーオペレーション命令,スーパバイザコール命令) 1ワードまたは2ワード 下線付き命令: 基本的命令としてはじめに解説

ニモニックレベルの命令形式(再) 命令内容を表す記号(ニモニック) 命令コード: オペランド: 命令操作の対象となるレジスタやメモリアドレス 機械語と同レベルの抽象度 人間にとっての了解性良好 オペランド: 命令コード 第1オペランド,第2オペランド ニモニック r,adr[,x]      ・・・ 2 ワード命令 ニモニック r1,r2         ・・・ 1 ワード命令 命令内容を表す記号(ニモニック) 命令操作の対象となるレジスタやメモリアドレス 3 3

ロード命令 (LoaD) … レジスタ間 LD GR2, GR5 *

ロード命令 (LoaD) … メモリ・レジスタ間 LD  GR0, #1000

アドレス修飾 LD GR0, #1000, GR2 * * アドレス #1000 に GR2 の #000A を加えた #100A が インデックスレジスタ アドレス #1000 に GR2 の #000A を加えた #100A が (effective address) 実効アドレス * 注意: GR0 はインデックスレジスタとして使えない

機械語レベルの命令形式(再) オペレーション (Op) フィールド: 命令に対応したコードを割り付ける 汎用レジスタ (r) フィールド: 0000 ~ 0111 ( GR0 ~ GR7 ) インデックスレジスタ (x) フィールド:   アドレス (adr) フィールド: #0000 ~ #FFFF 命令に対応したコードを割り付ける 0001 ~ 0111 ( GR1 ~ GR7 ) 7 7

ロード命令 (メモリ・レジスタ間) に対する機械語 ロード命令 (メモリ・レジスタ間) に対する機械語 ニモニック 第1オペランド 第2オペランド LD GR,    adr  [,XR] * * **** には レジスタ番号 アドレス修飾なし なら 0000 第1ワード 0001 0000 **** **** * 第2ワード ++++ ++++ ++++ ++++ <例> LD GR5, #1007 第1ワード 0001 0000 0101 0000 (#1050) 第2ワード 0001 0000 0000 0111 (#1007) ・・・ 逐次制御方式の実行例参照

フラグレジスタ (Flag Register) 演算命令の実行結果によって値を設定 3ビット構成 OF(Overflow Flag): 演算命令毎に設定が異なる SF(Sign Flag): 演算結果の符号が *が原則 ZF(Zero Flag): 演算結果が 0 のとき 1 が原則 SF, ZF の原則から外れる命令もあり 負のとき 1

ロード命令とフラグレジスタ LD GR3, #1000 ・・・ (LoaD) * #8000 = -32768 < 0 LD 命令では OF は常に 0 #8000 = -32768 < 0

ストア命令(STore) ST GR1, #530B * ST 命令では フラグレジスタは変化しない

ストア命令に対する機械語 ST GR, adr [,XR] ニモニック 第1オペランド 第2オペランド ニモニック 第1オペランド 第2オペランド ST GR,    adr  [,XR] **** には レジスタ番号 アドレス修飾なし なら 0000 第1ワード 0001 0001 **** **** 第2ワード ++++ ++++ ++++ ++++ <例> ST GR5, #1009  ・・・ 逐次制御方式の実行例参照 第1ワード 0001 0001 0101 0000 (#1150) 第2ワード 0001 0000 0000 1001 (#1009) ・・・ 逐次制御方式の実行例参照

ロードアドレス命令(Load ADdress)…(1) * LAD  GR0, #1000 * アドレス値(実効アドレス値)を直接レジスタに転送 LAD 命令では フラグレジスタは変化しない この場合の #1000 のように,命令内に直接 書かれた値を       という * 即値(immediate)

ロードアドレス命令(Load ADdress)…(2) LAD  GR0, #1000, GR2

ロードアドレス命令(Load ADdress)…(3) LAD  GR2, 1, GR2 * レジスタの値を1増やすのに使用

比較 (前項と似て非なる命令) LD  GR2, 1, GR2

演習問題 2.1 COMETⅡに,次の一連の動作を実行させる命令列 を示せ. メモリの #0100 番地の内容を汎用レジスタ GR1 に転送する. 汎用レジスタ GR1 の格納する値を汎用レジスタ GR0 およびメモリの #0101 番地にコピーする. 汎用レジスタ GR1 の格納する値を 0 にする. 汎用レジスタ GR1 の格納する値を 1 増やす. 汎用レジスタ GR1 の格納する値を 2 減らす.

演習問題 2.2 GR1 から GR0 へのデータ転送は, LAD命令でアドレス修飾を 使えば LAD GR0, 0, GR1 とすることはできない.その理由を説明せよ.また,どのように COMETⅡの機械語の仕様を変えればこれが可能になるのか 述べよ.

演算結果が –32768 ~ 32767 に収まらなくなったとき OF が 1 算術加算命令・減算命令 ADDA GR2, #1000 ・・・ (ADD Arithmetic) SUBA GR2, #1000 ・・・ (SUB Arithmetic) 被演算データを とみて加算・減算 符号つき2進数 * レジスタ間命令 メモリ・レジスタ間命令 の両方あり 演算結果が –32768 ~ 32767 に収まらなくなったとき OF が 1

算術加算命令 (メモリ・レジスタ間) に対する機械語 算術加算命令 (メモリ・レジスタ間) に対する機械語 ニモニック 第1オペランド 第2オペランド ADDA GR,   adr  [,XR] **** には レジスタ番号 アドレス修飾なし なら 0000 第1ワード 0010 0000 **** **** 第2ワード ++++ ++++ ++++ ++++ <例> ADDA GR5, #1008 第1ワード 0010 0000 0101 0000 (#2050) 第2ワード 0001 0000 0000 1000 (#1008) ・・・ 逐次制御方式の実行例参照

演習問題 2.3 次の(1)~(2)について,ふたつの命令の違いを説明せよ. (1) LAD GR1, 1, GR1 ADDA GR1, 1, GR1 (2) LD GR3, -1, GR3 LAD GR3, -1, GR3

リターン命令 RET ・・・ (RETurn from subroutine) * プログラムの実行終了を制御                    * プログラムの実行前の PR(プログラムレジスタ) の内容    ⇒ メモリの他の保管場所へ退避 プログラム終了時に PR(プログラムレジスタ)へ書き戻す 第1ワード 1000 0001 0000 0000 (#8100) ・・・ 逐次制御方式の実行例参照 プログラムの実行終了を制御

ニモニックレベルの命令 前回の機械語プログラム例 ニモニックレベルの 命令列 LD GR5,#1007 ADDA GR5,#1008 * LD GR5,#1007 ADDA GR5,#1008 * ST GR5,#1009 * RET *

機械語プログラムの決定手順

アセンブリプログラムから 機械語プログラムへ

アセンブリ言語 CASLⅡ 命令書式 命令の種類 ラベル ニモニック 第1オペランド,第2オペランド ;コメント   ラベル ニモニック 第1オペランド,第2オペランド ;コメント 命令の種類  機械語命令: COMETⅡ の命令(ニモニックレベル)  アセンブラ命令: START, END, DS, DC                 * *  マクロ命令: IN, OUT, RPUSH, RPOP プログラム範囲の宣言 データ,メモリ領域の設定を指示 機械語の命令系列を集約

アセンブリプログラム記述例 * * * * * プログラム名 始まりの定義 メモリ領域を確保して RESULT でラベル付け 終わりの定義 DATA1 でラベル付けされたメモリ領域にデータを格納 *

2 パスアセンブラ 2回の走査(2パス)で機械語に変換 START ↓ 1 パス目: 2 パス目: ラベルーアドレス対応表作成 END         ↓ 1 パス目: 2 パス目:         END ラベルーアドレス対応表作成 * ビットパターン作成 *

アセンブラ実行例(実行前) ソースプログラム オブジェクトプログラム ラベル ニモニック オペランド アドレス:機械語 PLUS START ラベル   ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC 20 DATA2 DC 12 RESULT DS 1 END オブジェクトプログラム アドレス:機械語  ↓    ↓  PLUS :  DATA1 : DATA2 : RESULT : ラベル-アドレス 対応表 

アセンブラ実行例(1パス目) ソースプログラム オブジェクトプログラム ラベル ニモニック オペランド アドレス:機械語 ラベル   ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC 20 DATA2 DC 12 RESULT DS 1 END オブジェクトプログラム アドレス:機械語  ↓    ↓  #1000: #1001: #1002: #1003: #1004: #1005: #1006: #1007:  #1008:  #1009:  * * PLUS :  DATA1 : DATA2 : RESULT : #1000 ラベル-アドレス 対応表  #1007 * #1008 * * #1009

アセンブラ実行例(2パス目) ソースプログラム ラベル ニモニック オペランド PLUS START LD GR5,DATA1 ラベル   ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC 20 DATA2 DC 12 RESULT DS 1 END オブジェクトプログラム アドレス:機械語  ↓    ↓  #1000: #1001: #1002: #1003: #1004: #1005: #1006: #1007:  #1008:  #1009:  #1050 #1007 #2050 #1008 #1150 #1009 #8100 #0014 #000C #0000 * PLUS :  DATA1 : DATA2 : RESULT : #1000 ☆機械語の構成は   テキスト p26 参照 ラベル-アドレス 対応表  #1007 #1008 #1009

演習問題 2.4 次のプログラムは,VALUE1 でラベル付けされたメモリ領域の格納する値から,VALUE2 でラベル付けされたメモリ領域の格納する値を引いた結果を ANSWER でラベル付けされたメモリ領域に格納するアセンブリプログラムである.これを 2 パスアセンブルせよ. SUBTRA START LD GR3,VALUE1 SUBA GR3,VALUE2 ST GR3,ANSWER RET VALUE1 DC 18 VALUE2 DC 24 ANSWER DS 1 END