• 検索結果がありません。

命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c

N/A
N/A
Protected

Academic year: 2021

シェア "命令セットの構成例 a) 算術 演算命令 例 )ADD dest, source : dest dest + source SUB dest, source : dest dest - source AND dest, source : dest dest AND source SHR reg, c"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

第11回

機械語とアーキテクチャ

コンピュータは,記号記号記号 で記号ででで 組組組 み組み 立みみ立立 てられ立てられてられてられ ,, 記号,,記号記号記号 ででで動で動 く動動くく 機械く機械機械:「ソフトウェア機械 ソフトウェアソフトウェアソフトウェア」としても理解されなければな らない。ソフトウェアの最も下位レベルのしくみが「(命令セット)アーキテクチャアーキテクチャアーキテクチャ」である。講義では命アーキテクチャ 令符号(機械語)の構成と種類についてまとめる。また,機械語を効率良く実行するために採用されている 技術について紹介する。

機械語とアセンブリ言語

機械語

機械語

機械語

機械語

プロセッサの動作を指示する「命令符号」

ビット列としてメインメモリに存在→命令レジスタに読み込む→プロセッサの動作が決定

命令符号を機械語(mmmmachine

achine

achine language

achine

language

language

language)ともいう.

命令符号

命令符号

命令符号

命令符号の

の構成例

構成例

構成例

構成例

加算などの演算命令の場合,命令符号(機械語)は, Fig.11-1 に示すように構成されている。

演算符号

格納場所1

格納場所2

Fig.11-1

演算命令の構成

一般には,演算の対象となるデータの格納場所の指定に制限がある。(例:格納場所1はレジスタのみ, 格納場所2はレジスタとメモリを指定) また,演算の結果も,常に格納場所1に格納する方式の他,格納 場所2も選択できる方式がある。

命令符号は命令の実行に必要な情報を整理して表現したものであり,これを基に命令デコーダがプロ

セッサ内部の制御信号を生成する。デコーダのVHDL記述の例は,資料p.11-6に記載されている(リスト

11-1)。

命令

命令

命令

命令セット

セット

セット

セット

命令 命令 命令

命令 セットセットセット(instruction setセット instruction setinstruction set) instruction set

プロセッサが持っている一群の命令

プログラマにとって命令セットは「アーキテクチャアーキテクチャアーキテクチャアーキテクチャ」そのものと言える。

命令セットは,機能によって以下のように分割できる.以下の記法では,レジスタやメモリなどのデータの格納場 所がdest,source,count,レジスタがreg,アドレスがaddress,入出力ポートがport でそれぞれ指定されているものと する.これらのアドレスの指定には複数の方法が用意されている(アドレッシング・モード). 1 OP-code Operand 演 算 の 種 類 を 指示する符号 対象となるデータと演算 結 果の 格納 場所 を指 示する符号

(2)

命令セットの構成例

a)

算術

算術

算術

算術・

・演算命令

演算命令

演算命令

演算命令

例)ADD dest , source : dest ← dest + source SUB dest , source : dest ← dest - source AND dest , source : dest ← dest AND source

SHR reg , count : reg をcount で指定されたビットだけ右にシフト SAR reg , count : reg をcount で指定されたビットだけ右に算術シフト

アセンブリ言語の例:ADD R0,R1

・・・R0←R0+R1

C言語だと a += b ;

b)

データ

データ

データ

データ転送命令

転送命令

転送命令

転送命令

例)MOV dest , source : dest ← source

アセンブリ言語の例:MOV R0,R1

・・・R0←R1

C言語だと

a = b ;

c)

ジャンプ

ジャンプ

ジャンプ

ジャンプ・

・コール

コール

コール

コール命令

命令

命令

命令

例)JMP address : 無条件ジャンプ.指定された番地にジャンプ J** address : 条件ジャンプ.条件** が成立すると指定番地にジャンプ この条件は演算の結果によって変化する条件フラグレジスタの特定のビット(Table 10-2 参照)で与えられる jz ×××× :演算の結果がゼロならPC に値××××を格納 jn ×××× :演算の結果が負ならPC に値××××を格納 CALL address :サブルーチンコール RET :サブルーチンからの復帰 アセンブリ言語の例:JMP A000

・・・A000番地にジャンプ

(実際の動作は,PCにA000を格納)

SUB R0,1 : レジスタR0から1 を減算

JZ A000 : 結果がゼロならA000番地にジャンプ(PC←A000)

C言語だと

k -= 1 ;

if(k==0){ ・・・・

割 割割 割 りりり 込り込込込 みみみ み タイマなどプロセッサの外部からのハードウェア的な要因により,予め定められた処理に分岐する,割り込みと呼 ばれる機能も,実装されている。 スタック スタックスタック スタック 操作操作操作 (操作(((「「「「 付録付録 」付録付録」」 参照」参照参照参照 )))) サブルーチンとのデータの引渡しに使う引数,サブルーチンからの復帰の際の戻り番地,あるいはレジスタ内容の 退避/復帰などで,スタック(stack)というデータ構造を用いる。通常,スタックは,スタック・ポインタと呼ばれ るレジスタ(SPと略記)を用いてメインメモリ上に構築される。スタック操作のための代表的な命令として,以下の 2つがある。(以下は,スタックをメモリ番地の少なくなる方向に伸ばしていく場合の例である。) PUSH :スタックへのデータ格納。SPの内容をデータ長の分だけ減じてからSPの内容をアドレスとするメモリにデー タを書き込む。 2 3 4

(3)

d)

入出力命令

入出力命令

入出力命令

入出力命令

例)IN reg , port OUT port , reg

e)

プロセッサ

プロセッサ

プロセッサ

プロセッサ制御命令

制御命令

制御命令

制御命令

例)HALT(プロセッサ停止命令),NOP

条件

条件

条件

条件フラグレジ

フラグレジ

フラグレジ

フラグレジスタ

スタ

スタ

スタ

命令の結果によって,条件フラグレジスタの内容が変化する.そして,このレジスタの内容は,条件付き分岐命令に影 響を与える.8ビットプロセッサで一般的に使用されている条件フラグをTable 11-1 に示す.

Table 11-1 条件フラグの内容の一例

1) フラグ名 符号名の例 条 件 キャリー キャリー キャリー キャリー C 加算時最上位からの桁上げ,減算時最上位への借りが発生するとセット ゼロ ゼロ ゼロ ゼロ Z 演算結果がゼロ,すなわち,すべてのビットがゼロで あるとセット 符号 符号 符号 符号 ,,, 負数,負数負数負数 S,N 演算結果が負数,すなわち,最上位のビットが1であるとセット オーバーフロー オーバーフロー オーバーフロー オーバーフロー V 演算結果が正,負の表現範囲を越えるとセット パリティ パリティ パリティ パリティ P 演算結果のパリティ(1の個数)が偶数であるとセット 補助 補助 補助 補助 キャリーキャリーキャリー ,キャリー,, , ハーフキャリー ハーフキャリー ハーフキャリー ハーフキャリー A, H 加算時第4桁からの桁上げ,減算時第4桁への借りが発生するとセット 減算 減算 減算 減算 N 減算を実行するとセット

C

Z

N V P

A

演算の結果によって特定のフラグ・ビットがセットされる

条件の判定などに使う

主要 主要 主要 主要 なななな アドレッシングアドレッシングアドレッシングアドレッシング・・・ モード・モードモード モード アドレッシング・モードにより,最終的にアドレスバスに出力される実効実効実効 アドレス実効アドレスアドレス(アドレス effective addressea) が変わってくる.主要なものを以下に示す.

Table 11-2

プロセッサのアドレス指定方式

1)

指定内容

実効アドレス

レジスタ

レジスタ

レジスタ

レジスタ直接

直接

直接

直接

データ格納レジスタ

指定された番号のレジスタ

即値

即値

即値

即値

データ

命令後の中にデータを埋め込む

絶対

絶対

絶対

絶対

絶対アドレス

絶対アドレスで指定されたメモリ

レジスタ

レジスタ

レジスタ

レジスタ間接

間接

間接

間接

アドレス格納レジスタR

レジスタRの内容((R)と表記)

ベース

ベース

ベース

ベース相対

相対

相対

相対

アドレス格納レジスタB,変位d

(B)+ d

PC

PC

PC

PC 相対

相対

相対

相対

変位 d

(PC)+ d

(4)

付録

スタック スタックスタック スタックとととと ササササ ブルーチンブルーチンブルーチンブルーチン スタック スタック スタック スタックは,Fig.11-2 に示すような構造を持つメモリである.先に格納したデータは後から格納したデータを読み出 してからでないと読みだせない(先入れ後出し,First In Last Out ).スタックへの読み書きは,PUSH とPOP という 動作によって行われる. 図ではデータの格納場所が移動するように描かれているが,実際にはスタックポインタ(SP)というレジスタを用い てメモリ上に構成される(Fig.11-3). スタックポインタの内容はスタックの読み出し/書き込みを行うメモリへのア ドレスになっている.SP を用いたスタックの動作は, PUSH:ⅰ)SP の内容を1語分減らす. ⅱ)SP の指す主メモリに書き込む POP: ⅰ)SP の指す主メモリから読み込む ⅱ)SP の内容を1語分増やす. となっている。 スタック用のメモリには,通常はメインメモリを使うが,PICマイコンのようにスタック専用のメモリを持つプロセッ サもある。 X X X Y X X Y Z Y Y Z Z Y X (a) (b) (c) (d) (e) (f)

Fig.11-2

スタックの概念

SP 1FFF 番地 SP 1FFE 番地 B レ シ ゙ ス タの値 メモリ (a) (b)P U S H B 1FFD 番地 B レ シ ゙ ス タの値 C レ シ ゙ ス タの値 SP (c)P U S H C B レ シ ゙ ス タの値 SP 1FFE 番地 D レ シ ゙ ス タ

(5)

プログラム   P1 プログラム   Q プログラム   P2 プログラム   Q プログラム   P3 プログラム   P1 CALL n CALL n プログラム   P2 プログラム   P3 サブルーチン    Q RET (a) (b) n番地

Fig.11-4 サブルーチン

サブルーチン

何度も使われる処理

を行うプログラムをサブルーチン

サブルーチン

サブルーチンにする

サブルーチン

ひとまとめの処理

プログラムのモジュール化の点で有利である.

スタックはサブルーチンの際の 戻戻戻戻 りりりり 番地番地番地の格納と レジスタ番地 レジスタ 内容レジスタレジスタ内容内容内容 のののの 退避退避退避に使われる.Fig.10-4にサブルーチンの ネステ退避 ネステネステネステ ィング ィング ィング ィングの際のスタックポインタとプログラムカウンタの動作を示す.この図では説明を簡単にするためにレジスタのデー タ長を8 ビットとしている. サブルーチンを呼ぶ際にはレジスタ退避などの余分な動作が必要となること( オーバヘッドオーバヘッドオーバヘッド)オーバヘッド に注意しなくてはならな い. m1 CA LL n1 CA LL m1 RET RET m1 n1 ① サブルーチン Q 1 サブルーチン   Q 2 (a) SP PC SP PC SP PC SP PC ① ② ③ ④ (b) n0 m0 ② ③ ④ n0 n1 n0 m0 n0 m0 n0 m1 CA LL n1 CA LL m1 RET RET m1 n1 ① サブルーチン Q 1 サブルーチン   Q 2 (a) SP SP SP PC PC SP SP SP PC PC SP SP SP PC PC SP SP SP PC PC ① ② ③ ④ (b) n0 m0 ② ③ ④ n0 n1 n0 m0 n0 m0 n0

Fig.11-5

サブルーチンのネスティングとスタック

(6)

割り込みとトラップ

ある処理プログラムに制御を渡すというサブルーチンコールと似た動作を行うものに 割割割割 りりりり 込込込 み込みみみと トラップトラップトラップトラップがある. 割 割 割 割 りりりり 込込込 み込みみみ 割り込みというのは,外部の要因によってプロセッサがある定められた処理を行う動作のことである.プロセッサ により異なるが,通常はハードウェアにより割り込み動作が始まる. 割り込みの用途は, ◎ 制御用制御用制御用制御用 AD変換などで制御用コンピュータシステムからAD開始を指示するパルスを出す.ADシステムが変換完了する までは時間がかかるが,変換終了を割り込みによりCPUに知らせることでCPU の効率化が図れる. ◎ タスクタスクタスクタスク * 切り替え ある一定時間ごとに割り込みをかけ,タスクを切り替えて,ユーザからは複数のタスクが並行し て働いて見えるようにする. *:タスクについては後で述べる. 割り込みにはマスクによって割り込み禁止が可能な 通常割通常割通常割通常割 りりりり 込込込 み込みみみと,電源障害など緊急の場合の処理のように禁止 できないようになっている マスクマスクマスクマスク 不能割不能割不能割不能割 りりり 込り込込込 みみとがある.割り込みを受け付けるかどうかの制御は 割みみ 割割 り割りりり 込込 み込込みみみ マスクフマスクフマスクフマスクフ リップフロップ リップフロップ リップフロップ

リップフロップ(Interrupt Mask:IM)で行う. 割り込み動作は, ⅰ)割り込みフリップフロップをセット ⅱ)PC の内容をスタックにプッシュ ⅲ)PC に割り込み処理プログラムの先頭アドレス(割り込みベクタ)を格納という手順で行われる. トラップ トラップトラップ トラップ(ソフトウェア割り込み) 割り込みと良く似た動作を行うものにトラップ(Trap)がある.プログラム中に置かれたTRAP 命令により,割り 込みと同様の動作を行う.ユーザプログラムからOS の用意している入出力などのサブルーチンを呼び出すときな どに使用する. 命令読込み 命令実行 読込み? 割込み 処理動作 YES NO

Fig.11-6 割り込みの検出と処理

参照

関連したドキュメント

第 98 条の6及び第 98 条の7、第 114 条の 65 から第 114 条の 67 まで又は第 137 条の 63

新たに取り組む学校施設の長寿命化 GIGAスクール構想の実現に向けた取組 決算額 29 億 8,997 万2千円 決算額 1億 6,213 万7千円

令和2年度 令和3年度 令和4年度 令和5年度

The current is sensed via a small resistor R4 (5 m W typically) connected between the USB−C connector ground and the main ground plane of the power source (secondary side ground

[r]

パターンB 部分制御 パターンC 出力制御なし パターンC 出力制御なし パターンA 0%制御.

規定は、法第 69 条の 16 第5項において準用する法第 69 条の 15 の規定、令第 62 条の 25 において準用する令第 62 条の 20 から第 62 条の

建築基準法施行令(昭和 25 年政令第 338 号)第 129