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

COMET II

N/A
N/A
Protected

Academic year: 2021

シェア "COMET II"

Copied!
7
0
0

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

全文

(1)

COMET II

のレジスター

山本昌志

2004

5

24

1

これまでの復習と本日の内容

1.1

これまでの復習

コンピューターを構成する最も重要な要素は、

Central Processing Unit (CPU:中央処理装置)

メイン メモリー(main memory:主記憶装置)。単にメモリーと呼ぶことも多い。

です。これまでは、メイン メモリーの中でのデータ(数値、文字)の格納方法を学習しました。次のような ことを理解しなくてはなりません。

COMET IIでは、16ビットを1ワード (1語)と言い、この単位でデータの処理を行います。

メモリーには、1ワード 毎にアドレスがついています。

数値も16ビットで表現します。符号付整数の場合は、それで表すことができる範囲は、以下の通り です。

正の数の絶対値の最大値は、(0111 1111 1111 1111)2 = (215-1)10=(32767)10

負の数の絶対値の最大値は、(1000 0000 0000 0000)2です。これは第15ビットが1なので負の 数で、2の補数表示です。したがって、その絶対値を求めるためには、ビット反転を行い、1 加算すればよい。したがってこれは、-(215)10=-(32768)10を表します。

符号無整数の場合は、以下の通りです。

表現可能な最小値は、(0000 0000 0000 0000)2 = (0)10です。

表現可能な最大値は、(1111 1111 1111 1111)2 = (216-1)10=(65535)10です。

数値と異なり、文字にはそれぞれ、番号をつけて区別します。文字とそれに対応する番号は、規格JIS X0201ラテン文字・片仮名用8単位符号で決まっています。

(2)

この番号は、8ビットなので、最大256文字しか使えません。数字とアルファベットと片仮名と記号 を表すのであれば十分です。漢字は、使えません。

COMET II1ワード16ビットに対して、文字は8ビットしか使いません。COMET IIでは1ワー ド で1文字を表すため、16ビットのうち上位8ビットは0として、下位8ビットで1文字分を表し ます。例えば 、アルファベットのYamaを表す場合、Y(59)16、a(61)16、m(6D)16、という 番号がついているので、COMETのメモリーには、次のように格納されます。ただし 、アドレスの実 際の割り当ては、OSが決めます。

1: 文字列”Yama”のメモリーへの格納

数値と文字では、メモリーの中身は異なります。例えば 、数値の(9)10と文字の”9”は、以下のように なります。文字の”9”は、JIS X0201では、(39)16です。

2: 数値の(9)10と文字”9”のメモリーへの格納

メモリーの中身を見ると、それが数値なのか文字なのか、判断できません。命令毎に数値を扱うのか、

文字を扱うのか決まっています。以降の、学習で分かるでしょう。

1.2

本日の内容

本日は、レジスタについて学習します。これは、CPU内のデータの記憶する場所と考えてください。教

科書のP.15〜P.20の指標レジスタの前までです。ここまでを中間テストの範囲とします。

(3)

2

レジスタとは何か

2.1

レジスタとは何か

レジスタを一言で言うと、CPU内の記憶装置みたいなものです。メモリーと同じで、いろいろなデータを 記憶させます。メモリとレジスタの違いは、どこにあるのでしょうか?。以下のような違いを列挙できます。

レジスタはCPU内部にあり、データを加工するために一時的に、記憶させる。また、加工結果も記 憶する。

メモリに比べて、レジスタの記憶領域は小さい。COMET IIの場合、メモリーのアドレス数は65536 個あるに対して、レジスタは20〜30個程度です。

メモリは番地を指定して目的のデータにアクセスする。一方、レジスタは名前を指定して 、目的の データにアクセスする。

現実の装置の場合、CPUのデータのアクセススピードは、レジスタの方がはるかに早い(C言語では レジスタを使ったプログラムができる)。

2.2

コンピューターはどのようにプログラムを実行するか

コンピューターのプログラムは、データと命令から構成されます。この命令とデータは、実行時に主記憶

装置(メイン メモリ)に格納されます。この格納の動作をロード と言います。これらのプログラムは、CPU

内部のレジスタに読み込まれ、処理されます。実際のコンピューターでのプログラムの動作順序は、次の通 りです。

1. 補助記憶装置(ハードデ ィスク等)からプログラムが メイン メモリーにロード されます。この指令は、

Operating System(OS)が出します。

2. メイン メモリーに格納されたプログラムの指示に従い、CPUが動作します。その動作は、

(a) CPUがメインメモリーから命令を取り出します。命令を取り出すアドレスは、CPUのプログラ

ムレジスタに書かれています。

(b) 取り出した命令は、CPU内の命令デコーダーにより、命令の内容を解析されます。

(c) 解析された命令は、論理演算装置(ALU:arithematic logic unit)により、演算が実行されます。

(d) 演算結果は、各種のレジスターに格納されます。

(e) プログラムレジスタの値を再設定します。

(f) 以上の動作をプログラム終了まで繰り返します。

です。

このプログラムの実行方法からも、CPUの中にもデータを記憶する場所が必要と理解できるでしょう。そ

(4)

使えば良いのでは 、と考える人も居るかもしれません。たぶんそれでもコンピューターはできるでしょう が 、今よりも複雑になると思います。また、CPUとメモリーのデータの交換が増えて、動作が遅くなるで しょう。

CPUと主記憶装置は、図3のような関係です。CPUは主記憶装置のアドレスを指定することにより、主 記憶装置に格納されているデータを引き出します。そして、それはレジスタに記憶され 、その中身に従い、

処理されます。処理された結果ももちろん、レジスタに記憶されます。レジスタの中身を主記憶装置に戻す ことにより、データの加工が完了します。

レジスタもデータなどを蓄えるので、メインメモリー同様、記憶装置の一種です。しかし 、それぞれ、役 割が異なります。

主記憶装置

– CPUとは独立です。

プログラムを格納します。

データも格納します。

レジスタ

– CPUの構成部品のひとつです。

演算の対象や演算結果を格納します。

主記憶装置のアドレスを格納するレジスタもあります。

要するに主記憶装置は、いろいろなデータ(命令もデータの一種と考える)を蓄えるファイルキャビネット のようなものです。一方、レジスタは、実際にCPUがデータを加工するときに一時的に記憶する場所と考 えてください。

C言語やFORTRANのプログラムでは、主記憶装置のデータを加工して、書き換えているように思いま

すが 、実際は、それらを加工する場合、レジスタが一時的にデータを記憶し 、それをCPUが加工して、主 記憶装置に戻しています。

3 COMET II

のレジスタ

3のうち、プログラマが注意を払うべきものは、

主記憶装置

レジスタ

です。今後アセンブラでプログラムを書いてみると分かりますが、制御装置や演算装置について、あまり注 意を払う必要はありません。COMET IIのレジスタを表1にまとめておきます。以降、それぞれのレジス タについて、説明します。

(5)

主記憶装置

3: CPUと主記憶装置の関係

1: CASL IIのレジスタ

記号 語源 日本語 機能

GR General Register 汎用レジスタ 計算等に用いる。またGR1〜GR7は指

標レジスタとしても使われる。

SP Stack Pointer スタックポインタ スタック領域の最上段のアドレスを保持

する。

PR Program Register プログラムレジスタ 次に実行する命令のアドレスを保持する

FR Flag Register フラグレジスタ 演算結果の状態を保持する

3.1

汎用レジスタ

これは、算術や論理、比較、シフト演算を実行するときに使います。GR0〜GR7までの8個用意されて います。あとは、教科書の通りです。

汎用レジスタは、8個用意されています。

汎用レジスタは、16ビットです。メイン メモリーのデータのビット数とおなじです。

(6)

3.2

プログラムレジスタ

プログラムカウンターと呼ばれることもあります。このレジスタの値は、プルグラムが次に実行する命令 語の先頭番地です。したがって、

必要なプログラムレジスタは、1個です。

プログラムレジスタは、16ビットです。アドレスのビット数と同じ 。 となります。

プログラムを事前に主記憶装置に格納して、プログラムレジスタPRの値によって、プログラムを構成す る命令を1つずつ取り出して、処理を行います。このような方式を逐次制御方式と言ったり、プログラム内 蔵方式(stored program)と言ったりします。

3.3

フラグレジスタ

Flag Regisuterのフラグとは、旗のことです。サッカーの試合で、プレーの状態により旗を上げます。あ れと同じです。コンピューターでは演算の結果により旗を上げます。

COMET IIには、1ビットのレジスタが3個あります。演算結果によって、それらのレジスタの値がセッ

トされます。セットされる内容は、教科書P.18の表2.4の通りです。主に、このレジスタは、実行順序を 変更、分岐命令に使われます。

フラグレジスタは、3個あります。それで、計算結果の状態を表します。

各レジスタは、旗の上げ下げなので、1ビットです。

あとは教科書の説明通り。

3.4

スタックポインタ

メインメモリーの一部をCPUが専用の記憶領域として使います。そのときのメインメモリーのアドレス を示します。したがって、

必要なプログラムレジスタは、1個です。

プログラムレジスタは、16ビットです。アドレスのビット数と同じ 。 となります。

これは、ここでは少し早すぎますので、実際に使うときに説明します。

3.5

指標レジスタ

(index register)

これは、特殊なレジスタで、ハード ウェアーは汎用レジスタが兼ねます。汎用レジスタのうちGR1〜GR7 をつかいます。GR0を使わない理由、これはマシン語との関係で、後の授業で述べます。

(7)

指標レジスタは、汎用レジスタの7個が使えます。

指標レジスタは、16ビットです。メイン メモリーのデータのビット数と同じです。

教科書の図2.5の表現は分かりにくいので、具体例でその動作を示します。例えばクラス40人分の数学 と英語と電子計算機のテストの点が 、メモリに格納されており、それぞれの平均点を求めたい場合、指標 レジスタを使うと便利です。このプログラムでは、それぞれの教科のクラスの合計点を計算するところが 、 重要です。指標レジスタを使う場合と使わない場合のフローチャートを図4に示します。

指標レジスタを使わないと、プログラムが大変でしょう。このように、指標レジスタを使うことにより、

基準点からのアドレスを加算してそのデータにアクセスできます。このように、アドレスを操作することを アドレス修飾と言います。

実は、皆さんは、これと同じプログラムテクニックをFORTRANの授業で学んだはずです。FORTRAN の配列と同じです。FORTRANでは分かりにくいのですが 、C言語の配列はまさにこれと同じことを行っ

ています(実感できます)。

"!#$%'&()*,+-

.0/132

, "!#$%&3(4'-

.5/61

2

4: 指標レジスタを使った場合と使わない場合のプログラム。クラスの数学のテストの合計点を計算して いる。GR1を指標レジスタとして使っている。

参照

関連したドキュメント

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

「橋中心髄鞘崩壊症」は、学術的に汎用されている用語である「浸透圧性脱髄症候群」に変更し、11.1.4 を参照先 に追記しました。また、 8.22 及び 9.1.3 も同様に変更しました。その他、

CPU待ち時間 PCとPSWを 専用レジスタ

繰延税金資産は、「繰延税金資産の回収可能性に関する適用指針」(企業会計基準適用指針第26

Windows Hell は、指紋または顔認証を使って Windows 10 デバイスにアクセスできる、よ

社内セキュリティ等で「.NET Framework 4.7.2」以上がご利用いただけない場合は、Internet

②利用計画案に位置付けた福祉サービス等について、法第 19 条第 1

現状では、3次元CAD等を利用して機器配置設計・配 管設計を行い、床面のコンクリート打設時期までにファ