[基礎知識]

ここでは、プロセッサ実験で出てくる基本的な事項について解説します。


「プロセッサ実験」の概略

情報科学実験2は「コンピュータを 自分達で作ってしまおう!」という実験です。「プロセッサ実験」という別称で呼ばれているのは、プロセッサはコンピュータの頭脳に当たる部分だからです。

でも、作ったコンピュータが、ちゃんと働くのか分からないと お話にならないので、実際に使ってみて、良く出来ているか判断します。 この判断材料となるのが、レイトレーシングという物なのです。(レイトレーシングは、コンピュータグラフィックスの一種です。詳しい説明は、にあります。)
学生達は「レイトレーシングが出来るコンピュータ」を目指して努力を重ねることになります。(「レイトレーシングだけが出来るコンピュータ」を作っている、という説もあります)

では、レイトレーシングをするには、何が必要なのでしょうか。

  • 足し算や引き算などの計算をしたり、絵をディスプレイに送ったりする部品。
  • どの部品をどこにつなげるか、というコンピュータの設計図。
  • 「こうやって、計算すればいいよ」という、手順。
  • 手順を日本語で言ってもコンピュータには分からないので、コンピュータに分からせるための翻訳器。
これらの仕事を、分担して進めていくことになります。

それでは、演習に必要な事項について、もう少し詳しく見ていくことにしましょう。


プロセッサとは

このページのTOPへ戻る

「プロセッサ(Processor)」とは「Process をするもの」つまり 「(データを)処理するもの」という意味です。「プロセッサ」は 例えば、携帯電話・テレビ・炊飯器、などに入っています。
そしてもちろんコンピュータの中にも。コンピュータに入っているプロセッサは偉いので特別に

  CPU:Central Processing Unit

という称号が与えられています。 有名なものとしては「インテルはいってる」というCMで おなじみ(?)のインテルのペンティアム( ペンティアムのホームページへ)でしょう。

ところでこのCPUっていったい何をしているのでしょう?

最近のコンピュータやゲーム機を見ていると、 CPUは普通の人間には理解できないような計算をしているように思えます。 ・・・が、実はCPUのできることは、せいぜい小学生ができる計算だけなのです。
ペンティアムと同じくらい有名な、PowerPC(IBMとモトローラの共同開発)というCPUができる計算をここで見てみましょう。

  • 整数の四則演算
  • 整数の大小比較
  • 整数の論理演算
  • 整数のRotate/Shift
  • 浮動小数の四則演算
  • 浮動小数の大小比較
  • 数字をメモしたり、思い出したりする
  • 条件に応じてその後の行動を変える

だいたいこんな程度です。

CPUのすごさは、さまざまな計算ができることではなく、 速く計算ができることなのです。

どれくらい速いのでしょうか?

最初にあげたペンティアムの最新版 Pentium は 500MHz で動きます。 500MHz というのは、1秒間に5億回の信号が送られることを意味します。 最近のCPUは1回信号が送られる間に少なくとも2つの計算をするので、

500,000,000 × 2 = 1,000,000,000 = 10億

1秒間に10億回の計算ができることになります。 一つ一つの計算はたいしたことなくても、これだけの速さがあるので、 動画・音・レイトレなど、すごいことができるんですね。


ハードウェアの基礎

このページのTOPへ戻る

CPUの内部について簡単に説明します。 CPUは複雑な電気回路です。 電気回路は大きく同期式回路非同期式回路に分けることができます。

現在生産/使用されているCPUはほぼ全て「同期式回路」です。PlayStation も、 SEGA Saturn も、あなたが今使っているコンピュータも、全て「同期式回路」 のCPUを使っています。理由としては、設計が簡単、デバッグがしやすい、 などがあげられるようです。プロセッサ実験で作る回路も同期式です。
(非同期を作ってはいけないという決まりはないが、前例はないです(と思う)。 「非同期のCPUを作る!」なんて壮大な目標を立てた方、頑張って下さい。 頑張ってもきっと単位を落します。)

さてCPUは、

などの部品が集まっているのですが、それぞれの部品は大きく2つに分けられます。 内部状態を持たない「組み合わせ回路」と、内部状態を持つ「順序回路」です。

組み合わせ回路の例としてハーフアダーを考えてみま しょう。 ハーフアダーとは次の式を表す回路です。

X + Y = S + C(ただし変数は全て1か0)

この式の意味は、X と Y という2つの2進数を足し、 和が S に 繰り上がりが C になるということです。。変数は2つ(X,Y)なので、全 部で4通り、 それを書き出すと、

足し算器の真理値表
X Y S C
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

この表を元に回路を設計していきます。まず、C を見てみましょう。 C が1になるのは X と Y がともに1になったときです。これを

C = X and Y

と表します。and は+や×と同じ演算子で 論理積と呼びます。
次に、S を見てみましょう。 S が1になるのは X と Y のどちらかが1になったときです。これを、

S = X xor Y

と表します。xor は排他的論理和と呼びます。
まとめると、ハーフアダーは

C = X and Y
S = X xor Y

と表すことができます。フルアダーも 簡単なので考えてみてください。 (フルアダーの解答


コンパイラとは

このページのTOPへ戻る

コンピューターの頭脳は『プロセッサ』です。人間で言うとプロセッサは 脳とか神経細胞とかに当たります。
人間は『脳をどの様に働かせるか』なんて別に考えなくてもやっていけているのですが、コンピューターはそういう訳にはいきません。この『どの様に働かせるか』 を「機械語」(machine code)で指示してやらないと、コンピュータは何もしてくれません。

「機械語」とはその名の通り「コンピュータがわかる言葉」なのですが、これがまた、とても変な言葉でして、すごくまどろっこしいというか、まわりくどい書き方をしないといけないのです。
例えば「1+1=2」という計算をする時に、「メモリの148番値を使って1を憶えておいて、メモリの3021番値に書いてある1と足す…」という命令で初めて 1+1 ができる、という感じです。

「機械語」でないとコンピュータに指示を出せないというのでは、いくら何でもあんまりです。
「おおまかな所だけ指示するから、メモリの何番値を使うか、とかいう細かいことは、適当に決めちゃって欲しい」という希望が出てきます。
そこで、 人間が書く『おおまかな命令』を「機械語」に書き直してくれるソフトが必要になります。それが『コンパイラ』です。

人間が書いた『おおまかな命令』が、いわゆる『プログラム』です。
プログラムは『プログラム言語』で書かれます。
世の中には沢山の種類のプログラム言語がありますが(C言語、BASIC、JAVAなど)それぞれに専用のコンパイラがあります。

また、コンピュータの種類によっても、「機械語」は異なります。
従って、コンパイラもコンピュータの種類ごとに 違ったものを作る必要があります。


レイトレ(レイトレーシング)とは

このページのTOPへ戻る

レイトレは、正確には「レイ・トレーシング(ray tracing)」。日本語に翻訳すると「光線追跡法」。コンピュータグラフィックスの技法の一つです。
コンピュータグラフィックスとは、コンピュータを使って絵を描くこと。つまり、「ここに こういう物がある」という情報を与えれば、それがどのように見えるかを コンピュータが計算してくれるのです。

[キャンバス] たとえば透明なキャンバスに、その向こうに見える景色と同じ絵を書くことを考えてみてください。
キャンバスのこっちから景色を透かして見て、見える通りに描いていけば、うまく景色の絵がかけるはずですよね。

[コンピュータのキャンバス] レイトレでも、これと同じことをします。
コンピュータの描く絵は、言ってみれば、無茶苦茶細かいモザイクみたいなものです。キャンバスを細かく切ってマスを作り、それぞれ そこから見える色を塗ることで、絵を作ります。
ちょうどマスが2つの色の堺目にあったらどうするのかって?
仕方ないから、どちらかの色で塗ります。右の図では、分かり易さのために大きく書いているのでデコボコですが、普通 マスはとても細かいので、人間の目では分かりっこないのです。(^^;

「マスを何色で塗ればいいか」という事は、「キャンバスの向こうにある何色の物体が見えるか」という事と同じです。このために必要なものは、物体・色を表す光・そして「目」です。

[視線] 目から出る「視線」というものを考えて、視線と物体が交わっていれば(交点を持っていれば)その物体はその方向に見える可能性があるわけです。
視線と交わる物体がたくさんあった場合には、一番目の近くにあるもの、つまり、 最も目の近くで視線と交わっているものが見えます(あたりまえ)。

[サンプル]さらに、表面が鏡でできた物体(例えば球)も表現できます。
その場合は視線の「反射方向」にある物体の色を 球の色に影響させることによって、 出来上がった絵ではあたかも球に他の物体が映っているように見えることになります。
右の絵では、球に床(の模様)が映っていますね。

フルアダーの解答
S = C0 xor X xor Y
C1 = (X and Y) or ((X xor Y) and C0)
〔トップページへ〕 〔「プロセッサ実験」のindexページへ〕
<vu@is.s.u-tokyo.ac.jp>

Last updated on 7 May, 1999