なにげなくCPUについて。
最近のふつーの書籍は、プログラム系のものはプログラム系で分かれてしまったので、なかなかそれ系を目にすることがない。あんまりよくないなぁ・・・。
で、CPUについてのお話を、やっぱりメモという形で中途半端に核心に触れないぐらいのメモとして書いていきます。
特に、ここではインテル系のCPUについてとりあげますが、世の中すべてがインテル系というわけではありません。もちろん。最近はCellが目立つので、そちらについても取り上げるかもしれません。
CPUは、ハードフェアの部分、ソフトウェアの部分両方ありますが、私の知っているのは主にソフトウェアの部分。
参考
技術資料が公開されているようなので、とりあえずリンクだけ。
参考
インテルCPUを語る場合、まず歴史について触れないわけにはいきません。
16ビットからの互換性のあるリアルモードがあり、その上にネイティブモード、プロテクトモードなどと呼ばれる32ビットモードがあります。MS-DOS、PC/ATマシンとの互換性を取るために今までこのような形を取っています。i386で32ビットになってからは、基本的なコード体系などの構造は変わっていません。
ソフトウェア資産は、一度作るといつまでも使うことがあるので面倒くさいということです。
CPUは、ハードウェアとI/Oポートを通して繋がっています。そして、メモリとも繋がっています。内部にはレジスタなどを持っています。電源が入ると、CPUは内部を初期化し、メモリからプログラムを実行しはじめます。これはBIOSという形でROM内に書かれています。ROMには、まずはディスク(フロッピーディスク、ハードディスク等)から、ブートプログラムを探して読み込み実行する、ということが書かれています。その前にハードウェアなどの初期化と動作確認などもします。このような部分をIPLとかいうような感じで呼びます。BIOSとセットでBIOSメーカーが作っていたりします。ここの部分を読むとおもしろいかもしれません。
で、ディスク内のIPLを読み込んだ時点では、一部のソフトウェア割り込みが利用可能になっています。これはBIOSに書かれている部分です。
EAX
EBX
ESI
EDI
Intel系32ビットのCPUは、リングプロテクションという形でソフトウェア同士がお互いのメモリを読み書きしないように保護する構造などがいろいろあります。そのなかで
メモリアクセス
メモリへアクセスするためには、いろいろな仕組みがあります。ページングするかしないか、というところとか、セレクタとか。
マルチタスク的仕組み
タスク切り替えも286CPUから搭載され、386の32ビット化と共に強化されました。
レジスタ一式を切り替え、全く別の処理を切り替えながら実行することができます。
おすすめ?