- ベストアンサー
x86系のCPUとは?
よく「x86系のCPU」という言葉を耳にするのですが、どのようなCPUのことなのでしょうか。また、どのような特徴があるのでしょうか。プログラマーやっているのですが気をつけなければいけないことありますか? それと、32bitCPUとか64bitCPUのbitってデータバスの幅のことなのですか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Q/どのようなCPUのことなのでしょうか。 A/ハードウェアに保護モードレベルを搭載したCPUのことで、CISC系の命令セット構造を装備したCPUをx86と言います。インテル互換の16/32bit-ALU(整数演算器)搭載CPUの設計(アーキテクチャ)をx86と言います。 現在のx86は、x87-FPU(浮動小数点演算器)、SIMD(MMX、SSE、3DNowなど)を統合しており、内部的にRISCと同等の構造を持つ物となっています。 ちなみに、x86以外のプロセッサでは既存の一般向けWindowsは動きません。x86とはCPUの処理を定義する基本設計を決めるCPUの規格なのです。これをプラットフォームといいます。 Q/プログラマーやっているのですが気をつけなければいけないことありますか? A/X86だから何々をというのは特にないでしょう。x86まで考えるプログラマーはWindowsなどのOSを設計する人間で、その上で動作するアプリケーションを設計するにはCPUの根幹構造はそれほど関係しません。 何故か?それはOSがあるためです。OS(Operating System/基本ソフト)はパソコンを使えば誰もが一度は聞く言葉ですよね。ただ、基本ソフトといっても具体的にどういう役割があるのかは知らない人が多いのも現実。 昔のDOSは別として現在のWindowsやMacintoshというのは、コンピュータの機能や能力が違っても一定の環境をソフトウェアに与えることが出来るように、ハードウェアとソフトウェアの間を取り持ち環境を整地する役割があります。そのため、プログラマーはハードウェアの構成を気にすることなくソフトウェアを作ることができ、とにかくOSにさえ最適化すれば良いのです。 Windowsに最適なソフトを作れば必然的にx86にも最適化されます。それだけです。 Q/それと、32bitCPUとか64bitCPUのbitってデータバスの幅のことなのですか? A/データバスなら既にかなり以前(Pentium時代)に64bit化されています。Pentium4に至ってはCPU内部のデータバスは256bitにもなる。では、Pentium4は256bitでしょうか? そうではなく、Pentium4は32bitプロセッサです。 32bitと64bitを決めるのは、データバスではなくALU/FPUの処理が何ビット単位かということです。データバスは一度にデータをいくら送ることができるかであり、処理を指す語ではないためです。 計算を行う、メイン回路(x86演算子)自体の処理能力が64bitの処理を一度にできるか出来ないかが問題なのです。 データバスは単にデータをプロセッサ内でやりとりする速度で64bitなら8バイトの情報を送ることができるだけで、周波数が1GHzであれば、それが10億回/秒で扱われるというだけです。一秒間に8GBの情報が扱える計算。 CPUが64bitというのは、内部で処理できるプログラミング精度を64bit単位で処理できるということ。これは、1回で2の32乗の命令処理から、2の64乗の命令を処理できるようになるということです。いわゆる倍精度の演算を一度できるようになるため処理速度が上がり、尚かつ64bitという新しい命令が円滑に処理できるようになるということ。 この64bitプロセッサには、AMDのAthlon64やインテルのアイテニアムなどがある。そのうちx86互換はAthlon64のみで、アイテニアムはx86を継承していないため、アプリケーションの互換性がない(ソフトウェア技術VLIW互換の技術でx86サポート)
その他の回答 (2)
- taknt
- ベストアンサー率19% (1556/7783)
インテルが 16ビットで 出してきたCPUです。 その前は 8085でした。
お礼
ありがとうございました。
- mrumesuke
- ベストアンサー率45% (254/557)
インテル社のi8086/8088の流れを汲むプロセッサですね。 古くは80186,80286,80386,80486ときて、今のPentiumやCeleronシリーズ、別会社ですがAMD社のAthlonやDuronなどといった互換プロセッサも含むはずです。 特徴、気をつけること・・・ とりあえずはバイト・オーダーでしょうかね。 おそらく他にも沢山あるとは思いますが・・・
お礼
ありがとうございました。URLもすごく参考になりました。バイトオーダーは確かに過去トラブった経験があります。
お礼
ありがとうございました。XXbitCPUの話、とてもわかりやすかったです。でも、プログラマはバイトオーダーに気をつけなければいけないと認識&理解したつもりでいたので2点目の回答はビックリしました。たとえばネットワークのデータ送受信だと、ネットワーク、OSがそれぞれバイトオーダーの問題を解消してくれているのですよね。でも、以前UNIXで開発してVxWorksで動作させたらバイトオーダーの違いで正常にデータを送受信できなかった経験があります。何故なのでしょう?