計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).

Slides:



Advertisements
Similar presentations
計算機システムⅡ 主記憶装置とALU,レジスタの制御
Advertisements

Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第2週目
2012年度 計算機システム演習 第4回 白幡 晃一.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
App. A アセンブラ、リンカ、 SPIMシミュレータ
計算機システムⅡ 命令セットアーキテクチャ
計算機システム ハードウェア編(第3回) ~ ノイマン型コンピュータ ~.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
プログラムはなぜ動くのか.
デジタル回路(続き) コンピュータ(ハードウェアを中心に)
2016年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
「ソフトウェアのしくみ」.
第7回 2006/6/12.
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
Microprocessor(Lecture 1)
第6回 よく使われる組合せ回路 瀬戸 重要な組合せ回路を理解し、設計できるようにする 7セグディスプレイ用デコーダ 加算回路・減算回路
コンピュータを知る 1E16M009-1 梅津たくみ 1E16M017-8 小沢あきら 1E16M035-0 柴田かいと
1.コンピュータと情報処理 p.18 第1章第1節 2.コンピュータの動作のしくみ CPUと論理回路
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
情報リテラシー2014 part 5/5 (亀田担当分最終回)
条件分岐と繰り返し.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
プログラミング言語入門.
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
コンピュータの基本構成について 1E16M001-1 秋田梨紗 1E16M010-2 梅山桃香 1E16M013-3 大津智紗子
Ibaraki Univ. Dept of Electrical & Electronic Eng.
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
ディジタル回路の設計と CADによるシステム設計
計算機構成 第2回 ALUと組み合わせ回路の記述
9. 演算回路 五島 正裕.
コンピュータアーキテクチャ 第 7 回.
コンピュータアーキテクチャ 第 7 回.
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
計算機構成 第4回 アキュムレータマシン テキスト第3章
プログラミング基礎a 第1回 ハードウェアとソフトウェア プログラミング総論 ~プログラミング言語とは~
情報とコンピュータ 静岡大学工学部 安藤和敏
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
2010年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
ディジタル回路 9. 演算回路 五島 正裕.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
プログラミング演習I 2003年4月30日(第3回) 木村巌.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
2013年度 プログラミングⅠ ~ 内部構造と動作の仕組み(2) ~.
2017年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
コンピュータアーキテクチャ 第 3 回.
基本情報技術概論(第13回) 埼玉大学 理工学研究科 堀山 貴史
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
9. 演算回路 五島 正裕.
情報コミュニケーション入門b 第2回 Part1 ハードウェアとソフトウェア
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 5 回.
プログラムの開発手順 1.プログラム設計(仕様の決定) 2.コーディング(ソースファイルの作成) 3.アセンブル(オブジェクトファイル
情報コミュニケーション入門b 第2回 Part1 ハードウェアとソフトウェア
ca-9. 数の扱い (コンピュータアーキテクチャとプロセッサ)
2014年度 プログラミングⅠ ~ 内部構造と動作の仕組み(1) ~.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~.
6.3 インタプリタ (1)インタプリタ(interpreter)とは
Presentation transcript:

計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央)

コンピュータ:機械から見ると 論理回路 コンピュータ

コンピュータ:人間から見ると ユーザ 入力 どのような仕組みで動いているのか? 出力 コンピュータ

コンピュータ・ハードウェア 記憶装置 入力装置 処理装置 出力装置

コンピュータ・ソフトウェア 記憶装置 入力装置 アプリケーションプログラム システムプログラム 処理装置 出力装置

疑問 処理装置 (CPU) はプログラム(≒ソフトウェア)を どのように解釈しているのか? 高級言語による プログラム 機械語による

(今のところの) 回答 コンパイラ,アセンブラと呼ばれる プログラムを変換するプログラムを使う コンパイラ アセンブラ 高級言語による 機械語による プログラム アセンブリ言語に よるプログラム

ことばの整理:機械語 CPUが直接理解し実行できる言語のこと プログラムは0と1の列から構成される CPUごとに異なる 高級言語による 機械語による アセンブリ言語に よるプログラム コンパイラ アセンブラ

ことばの整理:高級言語 人間が使いやすいプログラミング言語 C,C++,Java,Perlなど CPUごとに異ならない 高級言語による プログラム 機械語による アセンブリ言語に よるプログラム コンパイラ アセンブラ

ことばの整理:アセンブリ言語 機械語を人間にわかりやすくした言語 命令が機械語と (ほぼ) 1 対 1 に対応 CPUごとに異なる 高級言語による プログラム 機械語による アセンブリ言語に よるプログラム コンパイラ アセンブラ

ことばの整理:コンパイル 高級言語によるプログラムを アセンブリ言語によるプログラムに (または機械語によるプログラムに) 翻訳すること コンパイラ アセンブラ

ことばの整理:アセンブル アセンブリ言語によるプログラムを 機械語によるプログラムに 翻訳すること 高級言語による プログラム 機械語による コンパイラ アセンブラ

この実験の流れ 1. アセンブリ言語によるプログラミング 2. 作成したプログラムのアセンブル(手作業) 3. 実行(動作の理解) アセンブラ 機械語による プログラム アセンブリ言語に よるプログラム

この実験で用いるハードウェア KUE-CHIP2 教育用の8ビットマイクロプロセッサ ≒ CPU 8ビット=1バイト 1 13h ←16進数であることを示す  他にも13H,0x13など

KUE-CHIP2の構造 (p.77,図1)

KUE-CHIP2の各部:ALU 演算ユニット(Arithmetic and Logic Unit) 算術演算,論理演算,アドレスの計算を行う

KUE-CHIP2の各部:ACC アキュムレータ (accumulator) 演算に利用するレジスタ.8ビット 演算対象,演算結果を保持

KUE-CHIP2の各部:FLAG フラグレジスタ (flag register) 演算・シフト結果により変化.4ビット 桁上がりフラグ - CF VF NF ZF 桁上がりフラグ 桁あふれフラグ 負フラグ ゼロフラグ

KUE-CHIP2の各部:PC プログラムカウンタ (program counter) 次に実行する命令のメモリ上での アドレスを保持.8ビット

KUE-CHIP2の各部:内部メモリ 512バイト.バイト単位の番地指定 プログラム領域:0~255番地 データ領域:256番地~511番地 1FF データ 領域 ~ 256 100 255 0FF プログラム 領域 ~ 000 01100010

KUE-CHIP2でのプログラミング 独自のアセンブリ言語で行う プログラムはメモリのプログラム領域に 置かれる (プログラム内蔵方式) 0番地に置かれた命令から順番に実行される

KUE-CHIP2のアセンブリ言語 命令の種類:p.80 表1を参照 命令仕様: p.91~94 付録A を参照 機械語フォーマット:1バイトか2バイト  p.79 図4を参照

プログラム例 (p.84,リスト2) ACCの内容を論理左回転し,ACCに入れる 常に02番地へ戻る アドレス データ 命令 オペランド 00: 0110 001- 0000 0001 LD ACC, 01h 02: 0001 0--- OUT 03: 0100 0111 RLL ACC 04: 0011 0000 0000 0010 BA 02h ACCの内容を論理左回転し,ACCに入れる 常に02番地へ戻る ACCの内容を出力バッファ(OBUF)に出力する 「01」という値をACCに格納する 機械語による プログラム アセンブリ言語による プログラム 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 アセンブラ

アセンブルの方法 (1/4) p.93,A.2 命令セットを参照 「LD ACC,01h」のアセンブル 1 1 1 - 1 A B 1 1 1 - 1 A B B = 000:ACC B = 001:IX B = 01-:即値 B = 100:直接 (P) B = 101:直接 (D) B = 110:修飾 (P) B = 111:修飾 (D) Rsm 1 A s m × Rotate sm LD B ○ LoaD ST ◎ STore SBC SuB with Carry A = 0:ACC A = 1:IX

アセンブルの方法 (2/4) p.93,A.2 命令セットを参照 「OUT」のアセンブル 1 - - - 1 - × OUT OUTput 1 - - - 1 - × OUT OUTput IN INput RCF Reset CF

アセンブルの方法 (3/4) p.93,A.2 命令セットを参照 「RLL ACC」のアセンブル 1 1 1 1 A s m Rsm 1 A 1 1 1 1 A s m Rsm 1 A s m × Rotate sm LD B ○ LoaD ST ◎ STore SBC SuB with Carry A = 0:ACC A = 1:IX RA Right Arithmetically LA 1 Left Arithmetically RL Right Logically LL Left Logically

アセンブルの方法 (4/4) p.93,A.2 命令セットを参照 「BA 02h」のアセンブル 1 1 1 c c RCF 1 - × 1 1 1 c c RCF 1 - × Reset CF SCF Set CF Bcc c ◎ Branch cc Ssm A s m Shift sm A Always VF 1 on oVerFlow NZ on Not Zero Z on Zero

プログラム例 (p.84,リスト2) 「-」は0か1で置き換える (どちらでもよい) 02h BA 0010 0000 0011 04: ACC RLL 0111 0100 03: OUT 0--- 0001 02: ACC, 01h LD 001- 0110 00: オペランド 命令 データ アドレス 「-」は0か1で置き換える (どちらでもよい)

プログラム例 (p.84,リスト3) アセンブル完了 02h BA 0010 0000 0011 04: ACC RLL 0111 0100 03: OUT 0001 02: ACC, 01h LD 0110 00: オペランド 命令 データ アドレス 04: 03: 02: 00: 01: 05: アセンブル完了

プログラムの実行 第2.5節に沿って行う (p.82~86) 注意: 実行前にRESETを押すこと 全員確認できたら次の説明へ (次回はグループではなく一人1台ずつ行う)

今日の実験内容 プログラムがどう実行されているか理解 次回:課題6 (応用プログラミング) 課題1 課題2 ADD命令 課題2 ADC命令 課題3B 課題4 課題5 次回:課題6 (応用プログラミング)

各命令の動作 (p.79,2.4節) Fetch:命令をメモリから取ってくる Decode:取ってきた命令を解読する Execute:命令を実行する

実際に見てみる:リスト1 (p.81) プログラムの実行を停止する 80番地の内容を01とする プログラムを停止する アドレス データ ラベル 命令 オペランド D1: EQU 80h 00: 64 80 LD ACC,[D1] 02: A2 01 SUB ACC,1 04: 0F HLT END 80: プログラムの実行を停止する 80番地の内容を01とする プログラムを停止する アセンブル結果の16進表示 ACCの内容から1を引く 引いた結果はACCに蓄えられる メモリD1番地の内容を ACCに格納する 「D1」を見たら「80h」だと思う (変数宣言,初期化のようなもの)

各命令実行前後のCPUの内部状態 命令の実行 PC ACC フラグ 00000000 LD ADD,[D1] 00000010 00000001 SUB ACC,1 00000100 HLT 00000101 指導書 p.81 表2

今日の実験内容 課題の説明に従って,プログラムを実行し,CPUの内部状態を表にまとめる 課題1 課題2 ADD命令 課題2 ADC命令 課題3B (プログラムを作成) 課題4 課題5

課題3A:2バイトどうしの加算 0番地 1番地 1 1 + 1 1 2番地 3番地 1 1 4番地 5番地 1バイト = 8ビット

課題3B:2バイトどうしの減算 0番地 1番地 1 1 - 1 1 2番地 3番地 1 1 4番地 5番地 1バイト = 8ビット

今日のまとめ

2の補数表現 (負の数の表現法) 8ビットで数を表現する場合 -45は? 実際足すと? 1 1 45 1 2の補数表現 (負の数の表現法) 8ビットで数を表現する場合 -45は? 実際足すと? 45 1 -45の8ビットにおける2の補数表現 -45 1 1

ADD命令とADC命令の違い ADD命令:加算命令.CFを考慮しない ADC命令:加算命令.CFを考慮する 「CFを考慮する」とは…

桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF 1 + 1 CF VF NF ZF 0 0 1

桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF + 1 CF VF NF ZF 1 0 1 1

桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF + 1 CF VF NF ZF 1 1 1 1

桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF 1 + 1 CF VF NF ZF 0 1 1 1

次回の内容 課題6A:往復するフラッシャー 課題6B:積の計算 予習:必ずプログラムを作ってくること 作ってこないと終わりません グループではなく一人ずつ行う

積の計算 0番地 1 × 1 1番地 1 1 2番地 3番地 1バイト = 8ビット

フローチャートの例 1バイトの乗算 繰り上がりも 考えること 初期化 0 → C × 終了判定 Y 終了 HLT B = 0 ? N A × B 終了判定 Y 終了 HLT C B = 0 ? N 繰り上がりも 考えること CにAを足す C + A → C Bを1減らす B - 1 → B

計算機基礎Ⅲ

今日の内容 課題6A:往復するフラッシャー 課題6B:積の計算 終わった人から解散 各人が1つずつ行う (グループで1つではなく) 各人は各課題ができたら確認を受けること

課題6Bの確認 次の計算が正しくできることを見せる 9 7 E 4 × × 2 A 3 C 1 8 C 6 3 5 7

レポートについて 〆切:一週間以内 (次回の実験開始前) 厳守 提出場所:C2-503 (手渡し) または C1-301 注意: 完全なレポートを提出すること. 複数人で相談してレポートを作成した場合は,その旨をレポート内で述べること. 参考にした文献等も明記すること.

結果の整理1について 各課題で用いたプログラムも掲載する そのトレース結果を掲載する トレース結果の各行に対して, なぜそのような結果が得られるのかを 述べる それを踏まえて各命令の動作をまとめる

結果の整理1 の例 命令の実行 PC ACC フラグ 00000000 LD ADD,(D1) 00000010 00000001 LD命令は2バイト命令なのでPCの値は2だけ増加する. データ領域D1番地の内容が01hなので,LD命令を実行した結果ACCの内容は01hとなる LD命令でフラグレジスタの値は変化しない