32ビットOSと64ビットOSの違いは何ですか?32ビットOSは64ビットプロセッサで実行できますか?
32ビットOSと64ビットOSの違いは何ですか?32ビットOSは64ビットプロセッサで実行できますか?
回答:
あなたの質問はアーキテクチャ固有です。x64は本質的にx86アーキテクチャの拡張です。64ビットのアドレス空間をサポートしています。いくつかの新しい命令と新しいレジスタを提供します。
x64マシンで32ビットx86 Windowsを実行できます。Itanium 64ビットシステムではこれを実行できないことに注意してください。
64ビットプロセッサは、32 OSと64 OSの両方を実行できます(少なくともx64ができます)。32ビットプロセッサはネイティブで32のみ実行できます。
違いは主にポインター/参照のサイズです。64ビットマシンでは、64ビットアドレス範囲のアドレスを参照できます(したがって、2 ^ 64バイトのメモリが得られます)。32ビットでは、2 ^ 32バイト(= 4 GB)しかアドレス指定できません。現在のコンピューターを見ると、世界が64ビットに移行している理由は明らかです。32ビットでは、すべてのRAMを簡単にアドレス指定できなくなりました。
x64(AMD / Intel)では、64ビットの追加の利点があります。CPUはより多くのレジスタを備えているため、より効率的なコードが可能です。
他のアーキテクチャでは、64ビットと32ビットの違いはそれほど明白ではありません。たとえば、Nintendo 64(覚えていますか?)は64ビットマシンでしたが、そのコードのほとんどは32ビットでした。したがって、その場合、64ビットはマーケティングトリックとしてより役立ちました。
現在受け入れられている答えは一般に正しいですが、特にそうではありません。「32ビットCPU」や「64ビットCPU」と呼ばれるものは実際にはありません-これは、CPUのアーキテクチャのごく一部のみを参照する説明です。 CPUとメモリ間のアドレス選択ライン、つまりメモリ操作に使用できるいわゆるアドレス空間。
CPUがプロセッサとメモリの間のワイヤを座って織り(ラップ)していた昔は、32または(理論的には、当時は存在しなかったため)を使用する必要がありました。アクセスするメモリアドレスを指定するために使用されるCPUとメモリコントローラ間の64のワイヤ。たとえば、2ビットのメモリアーキテクチャがあるとします。00を送信するとアドレス0が選択され、01がアドレス1を選択し、10がアドレス2を選択し、11がアドレス3を選択します。 RAM(4バイト)。
32ビットCPUを使用し、CPUとメモリコントローラの間に32本のワイヤを追加して、より多くのメモリをサポートできるようにすると、32ビットを実行できる「64ビットCPU」が得られます。コードまたは64ビットコード。これは何を意味し、これはどのように起こりますか?さて、この回答の前の部分から2ビットCPUを取り出して別のワイヤを追加し、3ビットCPUに変えて、4バイトから2 ^ 3または8バイトのRAMに変えましょう。
既存の「2バイト」コードが実行され、上記の(00〜11)のように最後の2本のワイヤの値が設定されます。追加の接続はデフォルトでゼロになるように配線します。したがって、実際には2バイトコードが実行されるとき、00を選択するとき、実際には000を選択し、11を選択するときは実際に011を選択します。
プログラマーは、「ネイティブ」な3バイトコードを書きたいと思っており、追加のアドレス空間を活用するためにソフトウェアを書きます。彼女はCPUに、自分が何をしているかを知っていることと、新しい余分なワイヤを手動で制御することを伝えます。彼女のソフトウェアは余分なワイヤを知っており、000-111を正しく送信して、この新しいCPUアーキテクチャでサポートされているメモリの範囲に完全にアクセスできるようにします。
しかし、それはそれが起こる方法ではありません。実際、それは通常、物事が起こる方法ではありません。64ビットCPUが最初に導入されたとき(そして多数ありました)、それらはすべてまったく新しいアーキテクチャ/設計に対応しました。彼らは追加の32のワイヤを追加して「これは32ビットまたは64ビットモードで使用できる64ビットCPUです」と言うのではなく、「これが新しいCPUであり、このまったく新しい機械語でプログラミングを行うだけで、このまったく新しい方法で動作し、古いx86 / i386 32ビットCPUがこれまでになかったよりもはるかにエレガントに膨大な数の異なる問題を解決し、ネイティブの64ビットアーキテクチャです。 」
それは、Intel Itaniumの物語でした。IntelItaniumは、沈没の大きさから「Itanic」として知られるようになりました。新しい64ビット時代の到来を告げるものでしたが、それは目を見張るものでした。可変長命令、巨大なキャッシュ、64ビットのアドレス空間、大量のレジスタ、非常にエキサイティング、超クール、そして20年にわたるレガシーコードの再コンパイルまたは書き換えを誰もが納得させるのは非常に困難です。これは、AMDとIntelが実際に競合していたときに戻ってきました。AMDは、「すべての世界の問題を解決する」ビジネスをすべて忘れて、32本のワイヤをi386に追加して32ビット互換の64ビットCPU」とx86_64 CPUアーキテクチャが誕生しました。
実際、主要なオペレーティングシステム(Linux、Windows、BSDなど)のカーネル名とソースを見ると、AMD64 CPUとAMD64アーキテクチャへの参照が散らばっていることがわかります。AMDは、32ビットOSが64ビットハードウェアまたは32ビットアプリケーションでさえ実行できるように、32ビットアプリケーションとの互換性を維持しながら、全員を64ビットの世界に切り替えるための勝利戦略を考案しました。 64ビットハードウェア上の64ビットOSで実行できます。Intelは「Intel EM64T」アーキテクチャ(AMD64と基本的に同一)を使用して、スイートよりも早く続き、x86_64が勝ちましたが、ItanicやMIPS64やALPHA64などはデスクトップ/サーバー市場では見られなくなりました。
tl; dr amd64別名x86_64 CPUは、32ビットおよび64ビットのカーネルとコードの両方と互換性があるように設計されていますが、ほとんどの64ビットCPUは明らかに同じ方法で下位互換性がありません。32ビットCPUは最大4GiBのメモリにアクセスでき、64ビットCPUは見事な16個のEiB(16×1024 ^ 6バイト、つまり4GiBの40億倍のメモリ)にアクセスできます。
32ビットと64ビットの両方のOSは64ビットプロセッサで実行できますが、64ビットOSは64ビットプロセッサのフルパワー(より大きなレジスタ、より多くの命令)を使用できます。つまり、同時により多くの作業を実行できます。32ビットプロセッサは、32ビットWindows OSのみをサポートします。
32 and 64 bit OS can run on a 64 bit processor
、一般的には正しくありません