x64 ビット バージョンが x32 よりもはるかに高速なのはなぜですか?

x64 ビット バージョンが x32 よりもはるかに高速なのはなぜですか?

最近、古いラップトップ (Toshiba Satellite L500-1DT) が x32 よりも x64 ベースの Ubuntu バージョンでより良く動作することに気付きました。高速化という意味で、Adobe Flash ビデオとアプリはより良く動作します。ソフトウェア センターと APT アプリはよりスムーズに動作します。x64 ではすべてが完璧に動作します。冷却ファンの動作ははるかに少なくなります (x32 のように常にシステムを冷却するわけではありません)。x32 ビット バージョンでは、コンピューターが過熱するのではないかという予感がしました。2 週間前、x32 バージョンを実行したときにバッテリーが切れました。過熱が原因か偶然かはわかりません。非常に熱くなり、非常に遅くなりました。Celeron(R) Dual-Core CPU T3000 @ 1.80GHz × 2 および Intel GMA45 ビデオ チップセット (256 MB 共有メモリ付き) で動作しています。RAM - 4 GB。Ubuntu 11.10。

これは唯一のケースではなく、いわゆる「推奨 32 ビット バージョン」よりも x64 の方がはるかに優れていることがわかった唯一のマシンです。私はこれについて非常に興味があり、答えを知りたいです。

これについて私に説明するか、リンクで案内してください。

ありがとう !

答え1

えっと、「実行するハードウェアによっては2倍以上の速度になる「ああ、世界がこのように動いていればいいのに。」

たとえば、この記事を見てください:Ubuntu 12.04 LTS: 32 ビットと 64 ビットのパフォーマンス合成ベンチマークの中には、劇的なパフォーマンスの向上を示すものもありますが、わずかな向上 (10% ~ 30%) しか示さないもの、向上なし、またはパフォーマンスの低下を示すものも数多くあります。これらは単なる合成ベンチマークであり、ベンチマークの実行以外の作業を行った場合のシステム パフォーマンスに関する有用な情報は通常提供されません。

システムのパフォーマンスは「システム」のボトルネックによって大きく左右されるため、「ビット数が 2 倍になればパフォーマンスも 2 倍になる」といった大まかな一般化はできません。

そうは言っても、私は64ビット版のオペレーティングシステムを使うようにしています。少なくともパフォーマンスが多少は向上することを期待しているからです。CPUレジスタのサイズは2倍になりますが、より重要なのは、レジスタの数がx86の8個からx86_64 64ビットモードでは16個に増えることです。これにより、コンパイラはより高速なコードを生成する可能性があります。指示の調整これは、おそらく 1 つのインスタンスでは重要ではありませんが、システム全体で使用すると、パフォーマンスの向上に役立ちます。

32 ビット x86 用にコンパイルされたプログラムは「互換モード」で実行できるため、パフォーマンスの低下はほとんどありません。

メモリが 4GB 以下しかない場合は、32 ビットと 64 ビットの間に違いはなく、64 ビット バージョンを使用する理由がないとよく言われます。これはまったくの間違いです。CPU の命令アーキテクチャは 64 ビット モードでは十分に異なるため (IMO)、ハードウェアが 64 ビット OS をサポートしている場合は、64 ビット OS を使用することをお勧めします。

結局のところ、32 ビット CPU を 16 ビット モードで実行したくないですよね? :-)

答え2

簡単に言うと、x86_64モードではx86に比べてより多くの操作レジスタが利用可能です。また、紛らわしい名前のレジスタもあります。x32ABI は x86(_32) ではなく、x86_64 と純粋な x86 の混合です。ちなみに、リンクを貼った記事には、x86_64 の方がパフォーマンスが高い傾向がある理由がよく説明されています。

答え3

このような極端な違いは一般的ではなく、64 ビット モードの一般的な利点とはまったく関係がありません。

ハードウェアに関連する何らかのバグ、または Ubuntu の 32 ビット カーネルによって引き起こされるデバイスのファームウェアのバグが発生していると思われます。

答え4

64 ビット OS は、実行されるハードウェアによっては 2 倍、あるいはそれ以上の速度で動作します。32 ビットから 64 ビットに移行すると、OS がより大きなデータ チャンクを処理できるようになります。そのため、動作速度が大幅に向上します。また、64 ビット OS は 32 ビット OS よりも多くのメモリを使用します。64 ビット レジスタには、2 64 = 18446744073709551616 の異なる値を格納できます。これは 18 京を超える数です。現時点では、x86-64 プロセッサは 48 の物理アドレス ラインを使用しているため、64 ビット メモリ アドレスを持つプロセッサは、264 テラバイトのバイト アドレス指定可能なメモリに直接アクセスできます。

関連情報