(左)どうも,シンプルスターです.
(右)星姫でーす.
前回を振り返って,我々は
電気についての歴史を学び,主にコンピュータに関して,人類の軌跡を知りました.
そしてコンピュータの正体が単なる電子計算機であることを知ったのです.
たしかコンピュータは足し算しかできないんですよね?なんだかコンピュータの限界を知ってしまったって感じです.
メモリ(記憶装置)へ入出力を行えることも,話したかな?
うん,だいたい理解して聞いてました.コンピュータの本質だ,とか何とか.
では,もう少しコンピュータについて学んでみましょう.ということで…
今回の目標はコンピュータの構成を知り,コンピュータへの命令について理解することです.
それではみなさん,よろしくお願いします!
…しまーっす.
------------------------------------------------------------------------------------------------------------------------------------------------------
これまで機械的に歯車や定規を使って,人は10進数で計算機を作ってきました.
「そろばん」は一列に0〜9の数字を表現できるように作られています.このように,ひとケタに0〜9の数字が存在する理由ですが
みんな知っての通り,両手の指の数が10本だからです.
つまり基数が10で,人間社会における数の数え方は10進数が基本なのです.
さて,電子計算機も10進数で考えることが出来るかと言うと…
出来ないんですよね.2進数と言いたいんですよね.
なんでわかった?
前回の論理回路を眺めてれば,想像できます.電流が流れるか,流れないかの話をずっとしてきたわけで
トランジスタでいうベースの電圧が,ある値より上なのか,下なのかだったわけで,オンとオフ,0と1,つまり…ひとケタ0〜1の2進数ってね.
あーそういえば,小学生の時に2進数ってやったね.足し算をしたり,10進数に戻したり,練習させられたっけ.
私を小学生レベルに落とし込みたいと? ハイハイ,バカですよーだ.
また始まったよ.じゃあ,2進数(binary number)で構成される
データの最小単位をバイナリ・ディジット(binary digit),略してビット(bit)と呼ぶことを覚えてね.
はーい.
さて,コンピュータが扱う数値データをビット(bit)で表現すると知って,コンピュータを動かす命令もビット表現であると聞き,納得できるかい?
もちろん! 0と1の羅列を入力データとして,0と1の羅列を出力データとして得る.素人が考えるコンピュータの本質ですよね.
ハイハイ,素人の考えかもね.ただし,素人のように考え,玄人として実行することが本来,技術者の目指すべき姿なんだよ.(金出先生)
星姫の考えるそのbitを与え,bitを受け取るという仕組みは,本当にコンピュータの本質を突いている.
コンピュータの本質を見抜いた今,ここでコンピュータの構成を学んでみよう.
以下の図は,私が心のどこかでイメージしているコンピュータの構成です.
図中央,CPUと呼ばれる中央処理装置(Central Processing Unit)が32bitの命令(instruction)を入力に,制御とデータパスを行います.
ソラマメのような彼ですが,発熱しながら命令の通りに処理(制御)し
メモリ(DRAM)(Dynamic Random Access Memory)へと高速に32bitのデータを出し入れ(データパス)しています.
CPUが一時的に記憶できる領域(暗記領域)はレジスタ(register)と呼ばれる32bitのデータが32本入る領域です.(図の上部)
レジスタだけでは,うまく処理できない作業のために,高速に読み書き出来るメモ帳のような一次キャッシュがあります.
また,一次キャッシュでも収まりきらない情報は本のような2次キャッシュに読み書きして,作業の高速化を図っています.
覚えきれない情報はメモに書き留めておく,あまりに大量な情報は本に記す.
作業の効率化のために,記憶領域にもいくつか種類があるのね?
その通り! レジスタ > 一次キャッシュ > 2次キャッシュ > DRAM の順で読み書きが速いです.
レジスタとは,演算回路のすぐそばに位置しフリップフロップと呼ばれる記憶素子で構成されています.(最高速!)
キャッシュメモリとは,上の説明でいう一次キャッシュ,2次キャッシュのことで,同様にフリップフロップで出来ています.
DRAMに対してSRAM(Static Random Access Memory)と呼ばれ,高速アクセスが可能で低電力消費というメリットを持っています.
じゃあ,DRAM(でぃーらむ)をやめて,ぜーんぶSRAM(えすらむ)にしちゃえば?
構造上,SRAMはDRAMより集積率が低く,コスト的に難しいらしい.
ここはDRAMが安価で大容量ということで主記憶装置メモリとして活躍している.
DRAMはコンデンサとトランジスタだけで構成できる単純な回路らしいから,安く手に入ります.
構成に関してだけど,レジスタとキャッシュメモリはCPUと一緒になっているので,外から見えないし,交換できません.
CPUとメモリの話は以上です.(覚えたかな?)
まぁ,なんとか(汗)
次にまだ説明していないクレーンの絵,アイ・オー(I/O: Input/Output)つまり入出力について話をします.
これまでのメモリ(レジスタとキャッシュメモリ,DRAMの主記憶メモリ)は一次記憶(primary memory)と呼ばれ,揮発性のメモリなんです.
つまり電気の流れを止めると,記憶がなくなるのです.
ああ,だからか.思い当たる節がいっぱいあります!
電力供給が無くても記憶を留めておける装置を二次記憶(secondary memory)と呼びます.原理は磁石です.
磁気ディスク,ハードディスクと呼ばれる機械です.
円盤に塗装された酸化鉄を,ヘッドと呼ばれる電磁石の強力な漏洩磁場で磁化します.N極S極ってね.0と1に置き換えて使用します.
しかし機械故に,電子回路の速度と比べると,読み書きは本当に遅いです.千倍から十万倍遅いです.
なのでクレーンで表現しました.遅さをアピールしてます.
なるほど〜,しかし100,000倍遅いってどんだけですか!どおりでゲームのインストールに時間がかかる訳だね
ハードディスクは衝撃と振動に弱いです.まさに消耗品でして,信用してはいけません.
いつかは壊れます.明日なのか,5年後なのかはわかりませんが….
ハードディスクの他に,I/Oには液晶ディスプレイ,マウス,キーボード,スピーカーなど様々な外部インタフェースとの連携があります.
これらのデバイス(装置)をつなぐと,OSがデバイスを認識してくれます.
コンピュータの情報を出力したり,逆にコンピュータへ情報を入力できるようになります.
インターネットについて説明してなかったけど
離れたパソコンと0と1のbitデータを送受信できる機構を用意すれば,隣にパソコンがあるのと同じ…で理解できますかね?
I/Oについての話は以上です.
ここまでの説明をまとめます,コンピュータはCPU,メモリ,I/Oの3つで構成されています.(図を参照)
CPUの中にも大切な記憶領域,レジスタとキャッシュメモリが存在します.
SRAM,DRAM,磁気ディスク,3種類の記憶の仕方があることを知りました.
そんな感じの理解があればすばらしいです.
うん,OKです.
パソコンはそこそこ使ってるので,いくつか疑問も解けました!
続いてコンピュータへの命令について学んでみましょう.
みなさん,上記のレジスタやデータパス,命令のところで32bitと聞いて引っ掛かりませんでしたか? どうして32bitなんだろうと.
実はコンピュータの構成,特にCPUの回路の部分は,ある決まりごとに従って作られているのです.
それはアーキテクチャ(architecture)です.
あーき…てくちゃ? 何ですかそれは?
計算命令とCPUが本当の意味でつながっている部分.
命令セット・アーキテクチャとも言いますが,要は決まりごと・ルールです.
・32bitで命令を書くと決めた人がいます.
・レジスタの数を32本と決めた人がいます.
・2進数を深く理解し,効率的に計算をこなすテクニックを取り入れた人がいます.
・最大限の性能を引き出すため演算回路とレジスタ,キャッシュの構成を考えた人がいます.
・命令セットを考案する上で,コンセプトや理念を唱えた人がいます.
・命令の総数,種類,形式を決定した人がいます.
先人たちによって,作られたそのルールは,言わばコンピュータプログラムの根幹なのです.
そのアーキテクチャを学べば…
プログラマとして,最小限の記憶量で最大限のパフォーマンスを発揮できる.まさに基本が身につくんですね!!
まぁ,そんなかんじ.
…しかし残念だけどアーキテクチャは一つではありません.たくさんあります.
まぁ,どれも似ているとのことで,一つを理解できれば基本は身につくそうです.(よかったね.)
そこで!最も命令セットが美しいとされる,MIPSアーキテクチャについて勉強していこうと思います.
yes! yes!
このMIPS(Microprocessor without Interlocked Pipeline Stages)アーキテクチャ
実はNintendo64,PlayStation2やPlayStation PortableのCPUで採用されています.
学びやすい上に,ゲーム機にシェアを誇るアーキテクチャなんです.
また組み込み系(デジタルTVや自動販売機とか…)に強く,世界のCPUの1/3を占めたこともあるそうです.
ゲーム講座としては,うれしいことです.どう考えても,MIPSアーキテクチャを学ぶことが,本当の近道に思えるのです.
ということで,次回はMIPSアーキテクチャとはなんぞや?というテーマで勉強していこうと思います.
2009/09/06 初記.
2009/09/13 追加.
2009/09/19 修正.
2009/09/27 修正.