旧THE-BBL掲示板
もうあまり必要性がないので凍結しました。

[Returns to a topicAll  1-  Newest 50
CPUのお勉強
1 名前:hideyosi 2004/9/24 0:43  
ヘコヘコとCPUのお勉強をしてみたり。

xxビットCPUの意味。

CPUについて調べてみた。・・・・ギブアップ!!!! (;´д`) 
いろいろややこし過ぎてわからんわい!!!!

だた、私お得意の「一旦大雑把な法則を見つけ出して憶えていく」に照らし合わせると・・・

xxビットCPU。つまり二つの要素に影響する。メモリアクセスと演算処理。

まずは演算処理。
「ビット」って言うとピンとこないので、ソロバン、もしくは電卓を想像してほしい。8ビットは、桁が8桁までしかない電卓と考える。
例えば8ビットCPU。8ビット。すなわち桁が8桁(零から千万まで)しかない電卓。0〜99,999,999までに収まるような計算(計算結果も含めて!)なら、一発で求められる。「=」を押せば、答えは液晶に表示される。
しかし、それを超えると面倒(時間が掛かる)になる。これは想像できるだろう。一旦、メモに書いたりして、桁を分割したりして計算しないと答えがでない。つまり、何倍も時間が掛かるわけ。
つまり、平べったい理屈で言えば、電卓の桁数(ビット)が多ければ多いほど、一回の計算で済む。すなわち、早いということになる。

次に、メモリアクセス。
アドレス空間が・・・っていうとピンとこないので、「使えるメモ帳のページ数」と考える。
ここで言うメモ帳はへんな性質があって、さっきの電卓の桁数に応じて、ページ数・一ページに書ける桁数が決まる。
つまり、8ビット(8桁の電卓)だと、メモ帳のページ数は0〜99,999,999ページまでしか使えない。さらに、一ページに書き込める数字も、0〜99,999,999に限定される。
この範囲に収まる計算ならよいが、桁があふれると、とたんに何倍もの計算時間が掛かるってのは、もうわかるよね。

8ビット、16ビット、32ビット。これだけ見れば、「たかが倍じゃん。たいして違わないんじゃないの?」と思うかもしれないけど、上記の例で比べればピンと来るでしょ?つまり、

8ビット(8桁電卓)
    ・一回で0〜99,999,999までしか計算できない
    ・メモ帳のページ数は9千万まで
    ・一ページに書ける最大の数字は99,999,999

16ビット(16桁電卓)
    ・一回で0〜9,999,999,999,999,999までの計算が出来る
    ・メモ帳のページは、9千兆以上!
    ・一ページに書ける最大の数字も9千兆以上!

これを考えれば、例えばもっともよく使う数字の桁が十億あたりだった場合、8桁と16桁では、倍ではすまない。ヘタすると何十倍も時間の差が出る。

だから、通常、ビットが多いと、それだけ早くて高性能ってことになるわけ。

(余談だが、「じゃ、ちょうどいい12桁の電卓作ればいいじゃん!」って意見がある。ごもっとも!でも、この電卓はなぜか倍というキリのいい数字でないとかえって作るのが大変という性質を持っていると考えてもらえば。)

・・・しかし、「じゃ、ビット(電卓の桁)が多ければ多いほどいいのか!」っていうと、そうでもないんだよね。これが! (^^)

今の物価を考えると、ウン十億まで(10桁)があれば十分でしょ?普通。
(私は7桁でジューブンだ!悪かったな!!!)
そうなると、液晶の桁が10個並んでいる電卓で十分だよね?。そんな世の中で、全ての電卓が、16桁あったら・・・邪魔!!!!
「今の」物価で考えれば、8桁の電卓で十分だし、小さいので扱いや持ち運びも便利。16桁の電卓は「過剰品質」ってことになるわけ。
でも、例えば10年後。またバブル景気があって、給料の平均が一億円。そのぶん、缶コーヒーが一本12万6千900円という世の中になったとしよう。そうすると、8桁電卓は「すさまじく不便」になり、多少大きくても16桁の電卓が一番便利になる。

つまり、その世の中や対象によって、一番使いやすくて便利な桁数が変わるということになるわけ。

だから、例えばライブドアの社長が便利なパソコンは64ビット。でも、私が使いやすいのは8ビット。とか、そういうふうになるわけ。
(これは電卓の例での話ね)

現在、一番使いやすいとされているのが、32ビット。もう既に64ビットのCPUはあるんだけど、ちょーっと過剰品質状態なわけ。
(でも、じりじりと「32ビットじゃ足りない!」という状況が増えてきているのね。)

Re: CPUのお勉強  名前:hideyosi 2004/9/24 0:44  
リアルモードとプロテクトモード。
(例によって大雑把だよ)

インテルのCPUは、幸か不幸か、8086という16ビット版のCPUが大ヒットした。そして、その上で動くことを前提にしたMS-DOSも大ヒット。沢山の資産が生まれた。

時代が進み、16ビットじゃ足りないってことで、インテルは32ビットの高機能な新型CPU、80386を開発!。これで今までの面倒な問題も一気に解決。高速・大容量のメモリも使える。ばんざーい!

・・・と思ったら、あまりにもMS-DOSがヒットしすぎていた。いまさらMS-DOSがまったく動かないCPUじゃ売れない。MS-DOSの32ビット版を作ったって、みんながその新MS-DOSを買って使ってくれるとは限らない。こまった・・・

で、しょうがない。せっかくの32ビットだけど、16ビット(8086)とまったく同じに動く機能を追加しよう。これなら古いMS-DOSしか使いたくない人にも安心して買ってもらえるぞ!

うーん。いろいろとリサーチしたら、なんかみんなMS-DOS以外、あんまし使いたがっていないようだ。32ビットのまんまだと、「動かねーじゃねーか!」とか苦情きそう・・・

じゃ、こうしよう。80386は本来は32ビットだけど、電源を入れた瞬間は8086ってことで動く。で、プログラムとかである特別なスイッチを入れれば、32ビットに切り替わるというように設計する。

・・・っとまあ、こういう感じだったようです。(本当の経緯は違いますよ!念のため)

で、その、電源を入れたばっかりの状態(8086として動く、16ビットの状態)、これを、「リアルモード」といい、なんらかの方法でスイッチが入れられ、32ビットになった状態を、「プロテクトモード」と言うわけ。

この、80386で定められた動作の規格は、今でもずーっと受け継がれている。80486・80586(Pentium)・80686(Pentium2)・・・・

OSはいろいろあるけど、インテルのCPUで動くものは、みなこの仕様(というか、制約?)に縛られる。なので、動作までは、

1、電源投入
2、いやおうなしに、CPUは8086(リアルモード)になる。
3、CPUの仕様として、決まった番地のアドレスにジャンプして実行する
4、この決まった場所は普通、ROMになっている。ここにBIOSというプログラムが書いてあって、これを実行する。(BIOSが壊れているとかでない限り、これは回避できない)
5、BIOSには、FDのある部分を読んできて実行しろというプログラムが書かれている。(これがIPL)
6、IPLが実行される。(へ理屈だが、このIPLに全ての命令を書き込むことが出来れば、この時点でOSということになる。IPLには大きさの制限があるので、普通はここには、xxxを読み込んで実行しろという程度の命令だけしか書かれていない)
7、IPLによって、OSの本体が読み込まれ、実行される。(OSが起動!)
8、この時点では、どんなOSでも16ビット。MS-DOSと大差なく、低性能。
9、LinuxやOSASKなどの32ビットOSの場合は、この16ビットの状態の時に、あるスイッチを入れて32ビット状態(プロテクトモード)に切り替えられる。
10、ここで初めて、マシンは32ビットになる。あとは、16ビットの時にあらかじめ読み込んでおいた32ビットでプログラムが書かれている場所にジャンプし、それを32ビットのCPUとして実行を開始する。
11、32ビットOS、起動・初期化処理開始!!!!

・・・っとまあ、大変大雑把だがこんな感じなのだろうなぁ。きっと。

Re: CPUのお勉強  名前:hideyosi 2004/9/24 0:45  
>> ・・・っとまあ、大変大雑把だがこんな感じなのだろうなぁ。きっと。

>まさにこんな感じです。あまりにも正確すぎて、フォローするところがありません(笑)。

Kタンにお墨付きを貰ってみたり・・・

Re: CPUのお勉強  名前:hideyosi 2004/9/24 0:54  
リアルモードとプロテクトモード 2

これまでいろいろ調べて、ぼんやりだけどCPUのことが解ってきた。
・・・で! である。
実際に、OSとまではいかなくても、「ちゃんと動作する」ものを考えてみる。(文字表示とかだけじゃなくて)

時代は32ビットタケナワ! MS-DOSは資産がいっぱいあるけど16ビットなんで低性能・プログラムも不自由ってことだから。

・・・しかし!である。ざーっと調べてみた限りだが、16ビットは機能が単純なぶん、プログラムも単純にできるというニュアンスがあるように感じ始めた。
どうせ今の私のアセンブラ能力は、文法もまだままならない状態。こんな状態で無理するより、まずは16ビットである程度動くような状態にすることを目指す。「アセンブラそのもの」への勉強や慣れも必要だろうし。
「OSなんて言えない」という程度。でも、パッと見ると、なんとなくDOSに見えなくもない。そんな程度を一旦目標にしよっと。


Re: CPUのお勉強  名前: -- K 2004/9/27 2:00  
CPUのモードについて僕が書いた文章。
参考になるかどうか分からないけど、とりあえずどうぞ。

http://community.osdev.info/index.php?x86_mode

Re: CPUのお勉強  名前:hideyosi 2004/9/27 22:24  
>参考になるかどうか分からないけど、とりあえずどうぞ。

いつもありがとうございます〜。
[Returns to a topicAll NEXT100 Newest 50
BluesBB ©Sting_Band