Subsections

2 コメットIIのメモリー

2.1 情報の単位

情報の単位はビット(bit2)と言う.1ビットは,"0"か"1"か, "yes"か"no"かのように,2種類の情報を分けることができる3."yes"か"no"とかのように 表現すると後の計算が面倒なので,今後はすべて"0"か"1"の記号を用いることにする.よ うするに,"0"か"1"のいずれかが生じる事象4で,"0"または "1"を得たとき,1ビットの情報を得たという.

それでは,2ビットとはどういう情報であろうか?.それは,"00"か"01"か"10"か"11"のよ うに4つの事象があるとき,それらのいずれかを受け取ったとき,2ビットの情報を受け取った ことになる.同様に,"0と1がn個"あるような事象がある時に,それらの一つの事象を知 らされた場合,nビットの情報を受け取ったことになる.

これまでの話から,2進数の桁数がビット数になることが分かる.n桁の2進数はnビットの 情報を表すことが可能で,それは2$ ^n$ 個の事象を分けることができる.$ k$ 個の事象を分 けるために$ x$ ビット必要となると,

$\displaystyle x=\log_2 k$ (1)

の関係がある.

2.1.0.1 [練習問題]

秋田高専の学生数を800人とすると,一人一人を区別するために, 必要な情報量をビット数で答えよ.さらに,2進数で表現すると何桁必要か?.

2.1.0.2 [解答]

ビット数は,

$\displaystyle \log_2 800=9.64\cdots$    

である.2進数で表現すると,10桁必要となる.

2.2 COMET IIのメモリー

アセンブラ言語CASL IIが動作するコンピューターをCOMET IIという.これにはCPUとメモ リーがある.第1回の講義で述べたように,メモリーにはアドレスとデータの内容がある. このCOMET IIのメインメモリー(主記憶装置)は,図1に示すとお り,アドレス16ビット,メモリー16ビットとなっている.

この図を見ても分かるように,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.3 整数表現とその最大値と最小値

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

その整数の範囲については,教科書の通りである.電卓で自分で確認してみよう.

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

2.4 Pentiumのメモリー

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

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

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

実際のコンピューターで使われるメモリーは,RAM(Random Access Memory)である.1ビッ トのデータは,RAMの内部のコンデンサー7に電荷が有れば1 に、無ければ0になる。いったい、メモリー1枚にどれほどのコンデンサーがあるのだろう か?。

以上のことから、512 MBytesのRAMの中に、 $ 2^{32}=4294967296$ のコンデンサーがある。 約43億個である。非常に驚かされる。これが、1個の間違いも無く動く、どうなっている のだろうか?
ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
2005-11-17


no counter