2 COMET IIの取り扱う数値

2.1 COMET IIのメモリー

以前も述べたように情報処理技術者試験では、COMET IIという仮想的なコン ピューター(ハードウェアー)上で動作するCASL IIというアセンブラ言語が使 われます。わざわざ、世の中で使われているアセンブラ言語を使用しないで、 仮想的なものを使うのは、以下の理由によります。 要するに、単純な機能の試験を行いやすいアセンブラ言語が必要だったのです。 そのようなわけで、初心者がアセンブラ言語を学習するにはうってつけです。

このCOMET IIのメインメモリー(主記憶装置)は、アドレスが16ビット、メモリー 16ビットです。すなわち、図1のようになっています。

この図を見ても分かるように、2進数表示は紙面の面積が必要で紙の無駄です。 もう少し紙を節約し、更に分かりやすくするために、通常は図 2の16進数表示が使われます。

COMET IIでは、データは16ビット単位で扱われます。この16ビットの単位を1 ワード(1語)と呼びます。この1ワードは、教科書に書かれているように、便宜 上、上位8ビットと下位8ビットに分けています。そうして、最下位のビットか ら番号がつけられています。最下位のビット番号が0で、最上位が15です。コ ンピューターの世界では、整数は0から数えることが多いので、それに慣れま しょう。こうすると便利なことは、整数を表す場合、ビット番号が2進数の指 数を表します。すなわち、第0ビットは$ 2^0$、第7ビットは$ 2^7$、第15ビット は$ 2^{15}$の桁を表します。便利でしょう。

図 1: メモリーのモデル(2進数表示)
\includegraphics[keepaspectratio, scale=0.8]{figure/memory_binary.eps}
図 2: メモリーのモデル(16進数表示)
\includegraphics[keepaspectratio, scale=0.8]{figure/memory_hexadecimal.eps}

2.2 整数表現とその最大値と最小値

CASL IIのプログラムではよほどのことが無い限り、整数しか扱いません。ひ とつの整数は、メモリーのひとつのアドレスに格納されます。2進数で表現し た整数がそのまま、メモリー上のデータとなります。メモリーに格納された整 数の様子を図3に示します。ただし、符号付整数か、符号 無し整数かの判別は、プログラム次第です。

その整数の範囲については、教科書の通りです。電卓で自分で確認してみよう。

図 3: 整数を格納しているメモリーの状態(16進数表示)
\includegraphics[keepaspectratio, scale=0.8]{figure/memory_integer.eps}

2.3 Pentiumのメモリー

COMET IIのメモリーは先ほど述べたとおりです。皆さんが使っているIntelの Pentiumのメモリーはどうなっているのでしょうか?。まず、アドレスバスは32 ビットです。通常のコンピューターのデータは、8ビット単位で扱われ、その 単位を1 Byteといいます。一つのアドレスに1 Byte(8 bits)でデータが格納さ れます。Pentium のアドレスバスは32ビットので、それが取り扱うことができ るデータ数は、$ 2^{32}$です。$ 2^{30}$でG(ギガ)2なので、4 GBytesのデータを扱うことができます。

また、データバスも32 bitsです。一度に32 bitsのデータを取り扱うことがで きるから、32bit CPUと呼ばれています。ここで、ひとつ疑問があります。1つ のアドレスには8 bitsのデータしか格納されないのに、32 bitsのデータを一 度に取り扱うのは変です。どうやっているかというと、pentiumでは一度に4つ のアドレスのデータを読み書きできるのです。

ひとつのアドレスに、32 bitsを格納できるようにすれば、問題がなくなるよ うに考える人も居るでしょう。そうすると他の問題が生じます。今まで、8 bits単位でデータを取り扱ってきたので、過去のデータやソフトウェアーとの 互換性がなくなる可能性があります。



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成16年9月7日


no counter