H2
This presentation is the property of its rightful owner.
Sponsored Links
1 / 107

H2 :マイクロプロセッサ PowerPoint PPT Presentation


  • 90 Views
  • Uploaded on
  • Presentation posted in: General

H2 :マイクロプロセッサ. 岡本 吉央. 日程. 第1回 イントロダクション マイクロ動作の理解. 第2回 基本プログラミング (2 バイト乗算 ). 第3回 応用プログラミング ( 図形描画 ). 第4回 応用プログラミング ( メロディー出力 ). コンピュータの利用. ユーザ. 入力. どのような仕組みで動いているのか ?. 出力. コンピュータ. コンピュータ・ハードウェア. 記憶装置. 入力装置. 処理装置. 出力装置. コンピュータ・ソフトウェア. 記憶装置. 入力装置. アプリケーションプログラム.

Download Presentation

H2 :マイクロプロセッサ

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


H2

H2:マイクロプロセッサ

岡本 吉央


H2

日程

第1回

イントロダクション

マイクロ動作の理解

第2回

基本プログラミング

(2バイト乗算)

第3回

応用プログラミング

(図形描画)

第4回

応用プログラミング

(メロディー出力)


H2

コンピュータの利用

ユーザ

入力

どのような仕組みで動いているのか?

出力

コンピュータ


H2

コンピュータ・ハードウェア

記憶装置

入力装置

処理装置

出力装置


H2

コンピュータ・ソフトウェア

記憶装置

入力装置

アプリケーションプログラム

システムプログラム

処理装置

出力装置


H2

疑問

  • 処理装置 (CPU) はプログラム(≒ソフトウェア)をどのように解釈しているのか?

高級言語による

プログラム

機械語による

プログラム


H2

(今のところの) 回答

  • コンパイラ,アセンブラと呼ばれるプログラムを変換するプログラムを使う

コンパイラ

アセンブラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム


H2

コンパイラ

アセンブラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム

ことばの整理:機械語

  • CPUが直接理解し実行できる言語のこと

  • プログラムは0と1の列から構成される

  • CPUごとに異なる


H2

コンパイラ

アセンブラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム

ことばの整理:高級言語

  • 人間が使いやすいプログラミング言語

  • C,C++,Java,Perlなど

  • CPUごとに異ならない


H2

コンパイラ

アセンブラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム

ことばの整理:アセンブリ言語

  • 機械語を人間にわかりやすくした言語

  • 命令が機械語と (ほぼ) 1 対 1 に対応

  • CPUごとに異なる


H2

コンパイラ

アセンブラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム

ことばの整理:コンパイル

  • 高級言語によるプログラムをアセンブリ言語によるプログラムに(または機械語によるプログラムに)翻訳すること


H2

コンパイラ

アセンブラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム

ことばの整理:アセンブル

  • アセンブリ言語によるプログラムを機械語によるプログラムに翻訳すること


H2

逆アセンブル

コンパイラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム

ことばの整理:逆アセンブル

  • 機械語によるプログラムをアセンブリ言語によるプログラムに翻訳すること


H2

この実験の流れ

  • アセンブリ言語によるプログラミング

  • 作成したプログラムのアセンブル(手作業)

  • 実行


H2

コンピュータ・ソフトウェア

記憶装置

入力装置

アプリケーションプログラム

システムプログラム

処理装置

出力装置


H2

この実験で用いるハードウェア

  • KUE-CHIP2

  • 教育用の8ビットマイクロプロセッサ

  • マイクロプロセッサ ≒ CPU


Kue chip2 p 14 1

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


Kue chip2

KUE-CHIP2の各部:バス

  • 入力バス:入力部分とCPU内部を結ぶ

  • 出力バス:出力部分とCPU内部を結ぶ


Kue chip2 alu

KUE-CHIP2の各部:ALU

  • Arithmetic and Logic Unitの略

  • 演算論理装置

  • 算術演算,論理演算,アドレスの計算を行なう


Kue chip2 acc

KUE-CHIP2の各部:ACC

  • アキュムレータ (accumulator)

  • 演算に利用するレジスタ.8ビット

  • 演算対象,演算結果を保持


Kue chip2 ix

KUE-CHIP2の各部:IX

  • インデックスレジスタ (index register)

  • 演算に利用するレジスタ.8ビット

  • 演算対象,演算結果を保持

  • 修飾アドレス指定のときのアドレス修飾にも使用


Kue chip2 flag

KUE-CHIP2の各部:FLAG

  • フラグレジスタ (flag register)

  • 演算・シフト結果により変化.4ビット

桁上がりフラグ

桁あふれフラグ

負フラグ

ゼロフラグ


Kue chip2 pc

KUE-CHIP2の各部:PC

  • プログラムカウンタ (program counter)

  • 次に実行する命令のメモリ上でのアドレスを保持.8ビット


Kue chip2 mar

KUE-CHIP2の各部:MAR

  • メモリアドレスレジスタ

  • メモリ操作の対象とするアドレスを保持.8ビット


Kue chip2 ir

KUE-CHIP2の各部:IR

  • 命令レジスタ

  • メモリから読み出した命令を保持.8ビット


Kue chip21

KUE-CHIP2の各部:内部メモリ

  • 512バイト.バイト単位の番地指定

  • プログラム領域:0~255番地プログラムまたはデータの格納

  • データ領域:256番地~511番地データの格納


Kue chip22

KUE-CHIP2でのプログラミング

  • 独自のアセンブリ言語で行なう

  • プログラムはメモリのプログラム領域に置かれる (プログラム内臓方式)

  • 0番地に置かれた命令から順番に実行される


Kue chip23

KUE-CHIP2のアセンブリ言語

  • 命令:1バイトか2バイト

  • 命令の種類:p16,表1を参照

  • 言語仕様:附録Aを参照


P23 2

プログラム例 (p23,リスト2)

アドレス

データ

命令

オペランド

00:

0110

001-

0000

0001

LD

ACC, 01h

02:

0001

0---

OUT

03:

0100

0111

RLL

ACC

04:

0011

0000

0000

0010

BA

02h

「01」という値をACCに格納する

ACCの内容を出力バッファ(OBUF)に出力する

ACCの内容を論理左回転し,ACCに入れる

常に02番地へ戻る

機械語による

プログラム

アセンブリ言語による

プログラム

アセンブラ


H2

アセンブルの方法 (1/4)

  • p29,A.2 命令セットを参照

  • 「LD ACC,01h」のアセンブル

0

1

1

0

0

0

1

-

0

0

0

0

0

0

0

1

A

B


H2

アセンブルの方法 (2/4)

  • p29,A.2 命令セットを参照

  • 「OUT」のアセンブル

0

0

0

1

0

-

-

-


H2

アセンブルの方法 (3/4)

  • p29,A.2 命令セットを参照

  • 「RLL ACC」のアセンブル

0

1

0

0

0

1

1

1

A

s

m


H2

アセンブルの方法 (4/4)

  • p29,A.2 命令セットを参照

  • 「BA 02h」のアセンブル

0

0

1

1

0

0

0

0

0

0

0

0

0

0

1

0

c

c


P23 21

アドレス

データ

命令

オペランド

00:

0110

001-

0000

0001

LD

ACC, 01h

02:

0001

0---

OUT

03:

0100

0111

RLL

ACC

04:

0011

0000

0000

0010

BA

02h

プログラム例 (p23,リスト2)

「-」は0か1で置き換える (どちらでもよい)


P23 3

アドレス

データ

命令

オペランド

00:

0110

0010

0000

0001

LD

ACC, 01h

02:

0001

0000

OUT

03:

0100

0111

RLL

ACC

04:

0011

0000

0000

0010

BA

02h

プログラム例 (p23,リスト3)

アセンブル完了


H2

プログラムの実行

  • 第2.5節に沿って行なう (p.21~25)

  • 注意:実行前にはRESETを押すこと

  • 全員行なったら次の説明...


H2

今日の実験内容

  • 命令がどのように実行されているか理解する

  • フラグの働きを理解する


H2

命令はどのように実行されるか?

  • クロックに沿って実行 

  • クロック1周期分 → 1つの実行フェーズ

  • KUE-CHIP2での命令の実行:各命令は3から5フェーズで実行

    • P0,P1:各命令共通

    • P2以降:各命令相違

p17,表2を参照


H2

各フェーズの動作:P0

  • メモリのプログラム領域から次に実行する命令を取り出す準備

  • 次に実行する命令の場所はPC (プログラムカウンタ) が示す

  • 実際の動作:

    • (PC)→MARPCの内容をMARに転送

    • PC++PCの内容を1増やす


H2

各フェーズの動作:P1

  • 命令を読み込む

  • 実際の動作:

    • (Mem)→IR:MARの内容を番地とするメモリの内容が命令レジスタに転送される


H2

各フェーズの動作:P2

  • 命令レジスタに読み込んだ命令を命令デコーダが解読し,命令に応じた処理を行なう

  • 2バイト命令であると分かった場合,命令の2バイト目を読む準備をする

p17,表2を参照


1 p 18

実際に見てみる:リスト1 (p 18)

アセンブル結果の16進表示

プログラムの実行を停止する

メモリ80番地の内容を03とし,

メモリ81番地の内容をFDとする

メモリのプログラム領域D2番地の

内容とACCの内容を加算する

メモリのプログラム領域D1番地の

内容をACCに格納する

メモリのプログラム領域ANS番地にACCの内容を格納する

「D1」を見たら「80h」だと思う

(変数宣言,初期化のようなもの)


H2

実行のトレース

LD ACC,[D1]

p17,表2を参照

A

B

Bの部分


H2

実行のトレース

LD ACC,[D1]

00

00

000: 64

001: 80

002: B4

...

080: 03

081: FD

00

00

00

00


H2

実行のトレース

LD ACC,[D1]

P0: (PC)→MAR, PC++

00

00

01

000: 64

001: 80

002: B4

...

080: 03

081: FD

00

00

00

00


H2

実行のトレース

LD ACC,[D1]

P1: (Mem)→IR

01

64

00

000: 64

001: 80

002: B4

...

080: 03

081: FD

00

00

00

00


H2

実行のトレース

LD ACC,[D1]

P2: (PC)→MAR, PC++

01

64

02

000: 64

001: 80

002: B4

...

080: 03

081: FD

00

00

00

00

01


H2

実行のトレース

LD ACC,[D1]

P3: (Mem)→MAR

64

02

000: 64

001: 80

002: B4

...

080: 03

081: FD

00

00

00

01

80


H2

実行のトレース

LD ACC,[D1]

P4: (Mem)→A

64

02

000: 64

001: 80

002: B4

...

080: 03

081: FD

00

00

00

03

80


H2

今日の実験の内容 (1)

  • フェーズごとの動作 (マイクロ動作) を実際に追跡 (トレース) する

  • リスト1を使用


H2

今日の実験内容 (2)

  • フラグレジスタの働きを理解する

    • 桁上がりフラグ (Carry Flag, CF)

      • 演算結果に桁上がりが生じると 1

    • 桁あふれフラグ (Overflow Flag, VF)

      • 演算結果に桁あふれが生じると 1

    • 負フラグ (Negative Flag, NF)

      • 演算結果が負になると 1

    • ゼロフラグ (Zero Flag, ZF)

      • 演算結果がゼロになると 1


H2

実験課題 3.1 その1

  • リスト1のプログラムをフェーズ単位で実行 (シングルフェーズモードを利用)

  • (1) 2 + 3 = ?

  • 実行開始から実行終了まで,観測可能なレジスタ,バスをトレース(記録用紙は配布)


H2

実験課題 3.1 その2

  • リスト1のプログラムをフェーズ単位で実行 (シングルフェーズモードを利用)

  • (2)~(6)

  • ADD開始前からADD終了後まで,フラグレジスタのみをトレース

  • 負の数は「2の補数」によって表現


H2

実験課題 3.1 その3

  • リスト1のプログラムのADD命令をADC命令に変更

  • 指導書にない課題

  • (2)~(6)

  • ADC開始前からADC終了後まで,フラグレジスタのみをトレース


H2

実験課題3.1 注意

  • 「6」と「b」の読み間違いに注意

  • 負の数には「2の補数表現」を用いる

  • 「64」は何と読む?


H2

実験課題 3.1

  • (1)

    • 実行開始から実行終了まで,観測可能なレジスタ,バスをトレース

  • (2)~(6)

    • ADD開始前からADD終了後まで,フラグレジスタのみをトレース

    • ADD命令をADC命令に変更して,ADC開始前からADC終了後まで,フラグレジスタのみをトレース


H2

2の補数表現 (負の数の表現法)

  • 8ビットで数を表現する場合

  • -45は?

  • 実際足すと?

45

-45の8ビットにおける2の補数表現

-45


H2

第1回のまとめ


Add adc

ADD命令とADC命令の違い

  • ADD命令:加算命令.CFを考慮しない

  • ADC命令:加算命令.CFを考慮する

    「CFを考慮する」とは…

  • 演算結果によって,CFを変更する

  • CFが1であるとき,加算結果に1を足す


H2

レポートでの必須検討事項 (p. 26参照)

(1)について

  • 各命令の各フェーズでの動作を指導書 p. 16~20 に倣って図とことばの両方を使ってまとめること

    (2)~(6)について

  • 実験結果から,フラグレジスタの働き,および,ADD命令とADC命令の違いをまとめること


H2

レポートの作成補助

(1)について

  • p19, 20のような図のファイルを以下の手段で入手可能

    • インターネット経由:http://www.algo.ics.tut.ac.jp/~okamotoy/lect/H2/大学ページ→教員紹介→情報工学系→岡本吉央→研究室Web→Teaching→Micro-Processors

    • メモリスティックで直に


H2

次回

  • 実験課題3.2 乗算プログラムの作成

  • 符号無し2バイト精度の2数の積

  • 格納する番地は指導書の指示通りでなくても可

  • 演算結果は2バイトに収まると仮定

  • 必須の予習:プログラムの作成と      アセンブル


H2

符号無し2バイトどうしの乗算

×

1バイト = 8ビット


H2

第2回

  • 実験課題3.2 乗算プログラムの作成

  • 符号無し2バイト精度の2数の積

  • 格納する番地は指導書の指示通りでなくてもよい

  • 演算結果は2バイトに収まると仮定する

  • 必須の予習:プログラムの作成と      アセンブル


H2

補足:アドレシング・モード

  • アドレシング:オペランドの表現

  • KUE-CHIP2のアドレシング・モード(p. 27~29参照)

    • ACC,IX:ACC,IXの内容がデータ

    • 即値:オペランドそのものがデータ

    • 直接:オペランドがメモリのアドレス   そのアドレス上の内容がデータ

    • 修飾:「オペランド+IXの内容」が   メモリのアドレス   そのアドレス上の内容がデータ


H2

第2回

  • 実験課題3.2 乗算プログラムの作成

  • 符号無し2バイト精度の2数の積

  • 格納する番地は指導書の指示通りでなくても可

  • 演算結果は2バイトに収まると仮定

  • 必須の予習:プログラムの作成と      アセンブル


H2

進め方

  • 最低,グループで1つは以下を行なう

  • 作成したプログラムの入力

  • プログラムを確認するためホワイトボードの(1)~(4)を計算

  • それらが正しく計算できたら(A)と(B)を計算.実行時間を計測

  • ホワイトボードに実行時間とプログラムのメモリ消費量(単位:バイト)を記入


H2

終わり方

  • 16:00になったら「今日のまとめ」と「次回の説明」を

  • 終わったグループはこれで終了

  • 終わっていないグループは続行


H2

第2回のまとめ


2 p 26

第2回の必須検討事項 (p. 26参照)

  • 今日用いたプログラムのリストとフローチャートを載せてプログラムの説明

  • 他のグループのプログラムと比較

    • 論点1:実行時間

    • 論点2:プログラムのメモリ消費量

      注意:他グループのプログラムは掲載不要だが,  簡単な説明は記述


H2

第2回の必須検討事項 (続)

  • プログラムの実行時間の算定

    • p. 17表2 から 各命令のフェーズ数特定

    • 1フェーズ = 1クロック周期

    • クロック周波数 = 100 Hz

    • ∴ プログラム実行時間を理論的に算出可能

      (1) 実行時間を決めるパラメータを特定

      (2) 実行時間を与える公式を導出

      (3) 公式からA,Bの実行時間理論値を算出

      (4) 理論値と観測値の比較


3 p 25

第3回の説明:内容 (p. 25)

  • 3.3 オシロスコープへの文字の出力必須の予習:プログラムの作成と      アセンブル

  • 3.4(1) メロディーの出力予習:軽く目を通してくる(細かい説明は次回)推奨:電卓持参


H2

オシロスコープへの文字の出力

  • 出力バッファにDAコンバータを付けて出力信号をオシロスコープへDAコンバータ:ディジタル信号をアナログ信号に変換する回路

1101

DAコンバータ

13


H2

取り付けるDAコンバータの機能

  • 出力バッファの8ビットの中の上位4ビットを x座標下位4ビットを y座標 とする

  • x座標の取れる範囲は 0h~Fh

  • y座標の取れる範囲は 0h~Fh


H2

オシロスコープへの出力

F

LD ACC, 6Bh

OUT

B

0

0

6

F


H2

オシロスコープへの出力

F

LD ACC, 6Bh

OUT

  • 点を1つずつ表示

  • 続けて表示すれば全てが同時に表示されるように見える

B

0

0

6

F


H2

注意点

  • 1つの点は「・」として表示され「■」として表示されないので注意

  • ずっと表示されるようにすること(プログラムの図形表示部分は 停止しないループ内に来る)

  • オシロスコープの残像に注意


H2

表示する文字・図形について

  • 「A」以外の文字でもよい

  • 図形でもよい

  • 注意:適度に複雑なものを選ぶこと


H2

余力がある場合

  • 文字・図形を動かしてみる(右から左に)


H2

メロディーの出力(1)

  • 予習:付録B.1 (p. 30) を軽く読む

  • 推奨:電卓持参


H2

第3回

  • 3.3 オシロスコープへの文字の出力必須の予習:プログラムの作成と      アセンブル

  • 3.4(1) メロディーの出力予習:軽く目を通してくる(細かい説明は後ほど)推奨:電卓持参


H2

注意

  • 使用するDAコンバータはとても壊れやすいので,大事に扱うこと(むやみに触らない)

  • 特に,取り付け部分周辺の配線に注意

  • 取り付けも取り外しも教員・TAが行ないます


H2

進め方

  • 14:30終了を目処に

  • グループで最低1つは実行

  • オシロスコープのチャンネル1 → 赤チャンネル2 → 青グラウンド  → 黒  と接続

  • 14:30頃に次の説明を


H2

メロディーの出力

  • KUE-CHIP2から波を出力しスピーカから音を出す

  • 今日:音を出す仕組みの基礎

  • 次回:メロディー出力プログラムの実行


H2

音とは??

  • 音は空気の振動 (波)

  • 音の三要素

    • 大きさ

    • 高さ

    • 音色

←波の振幅の大きさ

←波の周波数の高さ

←波の形


H2

音を出す原理

  • KUE-CHIP2→DAコンバータ→スピーカ

  • スピーカ:電気信号を音(空気振動)に変換する装置


H2

作る波

  • 方形波 (矩形波):長方形の波

  • T = Ta + Tb

波の周期 T (秒)

On

Off

Ta (秒)

Tb (秒)


4 p 31

音を出すプログラム (リスト4 p. 31)

波のOn部

を作る

自分で

決める

波のOff部

を作る


H2

作る波:長さ

  • 方形波 (矩形波):長方形の波

  • Ta = (12+8a)T0,Tb = (16+8b)T0(ただし,T0= クロック周期

波の周期 T (秒)

On

Off

Ta (秒)

Tb (秒)


3 4 1 p 26

実験内容 3.4(1) p. 26

  • (a) オシロスコープによるクロック周期  の確認

    • スイッチCLKを中立に

    • ダイヤルCLKFRQの「0」~「8」の周波数を測定

    • 信号はコネクタJP3より出力


3 4 1 p 261

実験内容 3.4(1) p. 26

  • (b) リスト4のa,bを設定

    • 出力する音の周波数:440Hz(ラ)

    • 最適なクロック周期T0,a,bを定める (計算)


3 4 1 p 262

実験内容 3.4(1) p. 26

  • (c) 440Hzの音の出力

    • リスト4の入力

    • CLKFRQの設定

    • DAコンバータを通してスピーカから出力

    • 出力音が440Hz (誤差±1%) であることを確認


H2

第3回のまとめ


3 p 26

第3回の必須検討事項 (p. 26参照)

(3) オシロスコープによる文字の出力

  • プログラムのリストを載せて,プログラムの特徴を説明

  • 注:「他のグループとの美しさの比較」  は不要


3 p 261

第3回の必須検討事項 (p. 26参照)

(4) メロディーの出力

(a) 誤差±1%の確認

  • どのように最適なa, bを計算したか?計算過程も記述すること

  • どのように確認を行なったか?実際に誤差を計算すること

  • 他の方法も考えられるか


3 p 262

第3回の必須検討事項 (p. 26参照)

(4) メロディーの出力

(b) 精度を上げるための対策

  • KUE-CHIP2だけで対処する場合(ソフトウェア上,プログラム上の工夫)

  • そうでなくてもよい場合(ハードウェア上の工夫)


H2

次回の説明

3.4(2) メロディーの出力

  • 簡単なメロディーを出力させる

  • 必須の予習:プログラムの作成と      アセンブル

  • 参考:付録B.2とリスト5(p. 31~32)

  • 注意:リスト5は内容を理解してから   参考にすること


H2

諸注意

  • メロディーの出力は無限に繰り返すこと

  • p. 32表4「音階の周波数」を参考に

    • 1オクターブ違う音 → 周波数が2倍違う

  • 「休符」はどのように?(音を出すのは簡単.出さないのは?)

  • 同じ音が続くと1つの長い音に聞こえる→対策が必要


H2

第4回

3.4(2) メロディーの出力

  • 簡単なメロディーを出力させる

  • 必須の予習:プログラムの作成と      アセンブル

  • 参考:付録B.2とリスト5(p. 31~32)

  • 注意:リスト5は内容を理解してから   参考にすること


H2

進め方

  • グループで最低1つは実行

  • DAコンバータの取扱いに注意

  • できたグループから終了


H2

まとめ 必須検討事項 (p. 26)

(4)(c) 各自のデータ表現の特徴

  • プログラムのリストを載せて,説明

    データ表現:

  • CPUが理解できる表現

  • 01の列としての表現

    例えば,「楽譜」は人間に理解できるようにメロディーを表現している


H2

まとめ 必須検討事項 (p. 26)

(4)(d) 作成したメロディー出力法は  他のCPUにも流用できるか?

  • 他のCPUの例を1つ挙げて考察

  • 挙げたCPUの実行命令フェーズを調べ,それを踏まえて考察

    (4)(e) 省略 (必須ではない)


H2

まとめ 必須検討事項 (p. 26)

(5) 自分が最もよく使用しているCPU(または,有名なCPU) について そのアーキテクチャを調べてまとめる

  • 以下は (この課題での)重要項目

    • レジスタ,命令セット,メモリ空間の特徴は何か?

    • 乗算命令はどのように実行されているか?


H2

全体のまとめ


H2

人間と機械の橋渡し

  • 橋渡し = インタフェース

コンパイラ

アセンブラ

高級言語による

プログラム

機械語による

プログラム

アセンブリ言語に

よるプログラム


H2

さらに勉強するために

  • これらは直接関係 するもの

  • 間接的な関係にも 気を配って

実験 3学期

  • コンパイラの作成

  • CPUの論理設計

    講義

  • 計算機構成論I (3年1学期)

  • システム・プログラム論 (3年3学期)

  • 言語処理系論 (3年3学期)

  • 計算機構成論II (4年1学期)


H2

H2:マイクロプロセッサ

岡本 吉央


  • Login