32ビットOSは64ビットプロセッサで実行できますか?


25

32ビットOSと64ビットOSの違いは何ですか?32ビットOSは64ビットプロセッサで実行できますか?


あなたがWindowsについて話しているなら(そしてWin32タグはそれを示しているようです)、はい、絶対に-VistaとWin7 64ビットは互換性レイヤーを介してほぼすべての32ビットアプリをサポートしています-私はまだ何も見つけていません
'64

5
たとえば、Windows Vista x64でx86アプリを実行するかどうかよりも、64ビットプロセッサを搭載したボックスにWin Vista x86をインストールできるかどうかの方が問題のようです。
KTC

回答:


34

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

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


16

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ビットはマーケティングトリックとしてより役立ちました。


3

現在受け入れられている答えは一般に正しいですが、特にそうではありません。「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億倍のメモリ)にアクセスできます。


1
いくつかの事実上のエラーがあります。1)itaniumは可変長の命令を導入しませんでした(すべてのx86にそれらがありました)。非常に長いワードの命令が追加され、複数の64ビット量で同時に動作することができました。2)x86_64は、より多くのアドレス行をたたくだけではありません。また、多数の追加レジスタを追加し、すべてのレジスタ(およびそれらを操作するALU)を32ビットから64ビットに拡張しました。これを8086/8088と比較します。8086/ 8088は、さらに4つのアドレス行とセグメントセレクターレジスタを追加しましたが、前の8080のようにすべてを16ビットに保ちました。
-psusi

-1

32ビットと64ビットの両方のOSは64ビットプロセッサで実行できますが、64ビットOSは64ビットプロセッサのフルパワー(より大きなレジスタ、より多くの命令)を使用できます。つまり、同時により多くの作業を実行できます。32ビットプロセッサは、32ビットWindows OSのみをサポートします。


3
これは一般に正しくありませんが、特にx64に適しています。
ChrisInEdmonton 2009

1
32ビットプロセッサは、そのようなプロセッサアーキテクチャで実行するように設計されたオペレーティングシステムを実行します。
ワックスヘッド

32ビットx86 OSは明らかにARM64では実行できないため32 and 64 bit OS can run on a 64 bit processor、一般的には正しくありません
-phuclv

@Phúc32ビットツインをサポートしない64ビットプロセッサが存在する場合があります。ただし、引数で偽論理を使用します。32ビットMicroSparc上のSunOS 4.4.1は、ARM32でも実行されません。ロジックを使用すると、32ビットOSが32ビットプロセッサで実行できることは一般的に正しくありません。あなたのような常識を無視すると、Android開発者がWintelマシンでAndroid ARMイメージを実行するため、32ビットARM OSはIntel i386 / x64上で実行されると主張できます。もちろんOSは、右のプロセッサファミリ用および物理的なハードウェアではなくエミュレーションのコースOSの実行である(十分に出て、言った)
ティノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.