2009-07-20 09:39:10 +0000 2009-07-20 09:39:10 +0000
26
26
Advertisement

32ビットOSは64ビットプロセッサで動作しますか?

Advertisement

32ビットOSと64ビットOSの違いは?32ビットOSは64ビットプロセッサで動作しますか?

Advertisement
Advertisement

回答 (3)

35
35
35
2009-07-20 09:42:36 +0000

あなたの質問はアーキテクチャ固有のものです。x64は本質的にx86アーキテクチャの拡張です。64ビットのアドレス空間をサポートしています。いくつかの新しい命令と新しいレジスタを提供します。

x64マシン上で32ビットx86 Windowsを実行することができます。Itanium 64 ビットシステムでは実行できないことに注意してください。

3
3
3
2015-10-03 02:08:32 +0000

現在のところ、一般的には正しいとされている答えですが、具体的にはそうではありません。32ビットCPU」や「64ビットCPU」と呼ばれるものは、実際には存在しません。特に、CPUとメモリの間のアドレス選択ラインの数、つまりメモリ操作に利用可能ないわゆる_アドレススペースの数について言及しています。

昔の人が座ってプロセッサとメモリの間の配線を編んで(ラップして)いたCPUの時代には、どのメモリアドレスにアクセスしたいかを指定するために、CPUとメモリコントローラの間に32本か(理論的には当時は存在しなかったので)64本の配線を使用しなければならなかったでしょう。例えば、2ビットのメモリアーキテクチャがあるとします。00を送信するとアドレス0が選択され、01はアドレス1が選択され、10はアドレス2が選択され、11はアドレス3が選択されます。この2ビットにより、2^2バイトのRAM(4バイト)が得られます。

32 ビット CPU を使用して、CPU とメモリコントローラの間にさらに 32 本の配線を追加して、魔法のようにより多くのメモリをサポートできるようにした場合、32 ビットコードまたは 64 ビットコードを実行できる「64 ビット CPU」ができあがります。これは何を意味し、どのようにして起こるのでしょうか?先ほどの2ビットCPUを3ビットCPUにして、4バイトから2^3バイト、または8バイトのRAMにしてみましょう。

既存の「2 バイト」コードが実行され、上記のように最後の 2 本のワイヤの値を設定します (00-11)。デフォルトでは余分な接続をゼロにするので、実際には2バイトコードが実行されるとき、00を選択すると実際には000が選択され、11を選択すると実際には011が選択されることになります。簡単です。

さて、あるプログラマが「ネイティブ」な3バイトコードを書きたいと考え、余分なアドレス空間を利用するためにソフトウェアを書きます。彼女はCPUに、自分が何をしているのか分かっていて、新しい余分な配線を手動で制御することを伝えます。彼女のソフトウェアは余分な配線を知っていて、正しく 000-111 を送信し、この新しい CPU アーキテクチャでサポートされているメモリの範囲に完全にアクセスできるようにした。

しかし、このようなことが起こるはずはありません。実際には、これは通常、物事がどのように起こるかということではありません。64ビットCPUが最初に導入されたとき(多くのCPUがありました)、それらはすべて全く新しいアーキテクチャ/デザインを採用していました。32 本の配線を追加して、「これは 32 ビットでも 64 ビットでも使える 64 ビット CPU です」と言うのではなく、「これは私たちの新しい CPU で、まったく新しいマシン言語でプログラミングするだけで、まったく新しい方法で動作し、古い x86/i386 32 ビット CPU よりもはるかにエレガントに、バザリオのさまざまな問題を解決してくれます。楽しんできてください。

それが、今では「イタニック」として有名なIntel Itaniumの話でした。それは、新しい64ビット時代の到来を告げるものとされていましたが、それは目を見張るものでした。可変長命令、巨大なキャッシュ、64ビットアドレス空間、大量のレジスタ、超エキサイティングで超クール、そして20年分のレガシーコードを再コンパイルしたり書き換えたりするのは、誰もが納得できないほど難しいものでした。AMD と Intel が実際に競合していた頃の話ですが、AMD は「世界中の問題を解決する」というビジネスを忘れて、i386 に 32 本の配線を追加して 32 ビット互換の 64 ビット CPU を作ろう」という素晴らしいアイデアを思いつき、x86_64 CPU アーキテクチャが誕生しました。

実際、主要なオペレーティングシステム(Linux、Windows、BSDなど)のカーネル名やソースを見ると、AMD64 CPUやAMD64アーキテクチャへの言及が散りばめられています。AMDは、32ビットアプリケーションとの互換性を維持しつつ、32ビットOSが64ビットハードウェア上で動作するように、あるいは32ビットアプリケーションが64ビットハードウェア上の64ビットOS上で動作するように、すべての人に64ビットの世界への移行を促すための勝利の戦略を考え出しました。Intelは、「Intel EM64T」アーキテクチャ(基本的にAMD64と同じ)を開発し、x86_64が勝利を収め、ItanicやMIPS64やALPHA64のような他のアーキテクチャはデスクトップ/サーバ市場では見られなくなりました。

tl;dr amd64 aka x86_64 CPUは、32-bitと64-bitの両方のカーネルとコードに対応するように設計されていますが、ほとんどの64-bit CPUは、同じように後方互換性はありません。32 ビット CPU は最大 4GiB のメモリにアクセスできますが、64 ビット CPU は 16 EiBs (16 × 1024^6 バイト、4GiB の 4 億倍のメモリ) にアクセスできます。

-1
Advertisement
-1
-1
2009-07-20 09:45:06 +0000
Advertisement

32ビットOSも64ビットOSも64ビットプロセッサ上で動作しますが、64ビットOSは64ビットプロセッサのパワーをフルに使うことができます(レジスタが大きくなり、命令数が増えます) - つまり、より多くの作業を同時に行うことができます。32ビットプロセッサは32ビットWindows OSのみをサポートしています。

Advertisement

関連する質問

15
19
9
7
8
Advertisement
Advertisement