web-dev-qa-db-ja.com

Windows 7 x64がPCのx86エディションよりも高速に動作するのはなぜですか?

Windows 7 x64がx86のものを主に使用しているにもかかわらず、私のPCでx86エディションよりも高速に動作するのはなぜですか?私の何が問題で、何が不足していますか?

私が使用するものの大部分はx86です(DAW、ゲーム、メディアプレーヤーなど)。ただし、それらのかなりの量はx64です(ただし、x86の対応物は問題なく動作します)。

私は同じシステムで同じものを使用しようとしましたが、常にWindows 7 x64がx86よりもわずかに速く動作することに気づきました。私は非常に注意深いです。最も小さなウィンドウアニメーションにも気づきました。

システム:Windows 7 Ultimate x64
[〜#〜] cpu [〜#〜]:Intel Core 2 Duo E7500 @ 2.93 GHz
[〜#〜] ram [〜#〜]:2 GB x 2 = 4 GB DDR2 @ 332 MHz
マザーボード:インテルD945GCNL
グラフィック:ATI Radeon HD 4350 @ 1 GB専用
オーディオ:M-Audio FastTrack Pro
[〜#〜] hdd [〜#〜]:Samsung HD753LJ 733 GBおよびSamsung HD160JJ 156 GB

ご覧のとおり、私のシステムは古いです。

11
Jasper

これは、いくつかの追加されたコンテンツとともに、個々の既存の回答からのビットを要約することにより、完全な回答を提供する試みです。このリストは、特定のケースで除外できるものも含めて、一般的なケースのすべての可能性を含めようとしています。

CPU命令セットの違い

Joel Coehoorn で説明されているように、ネイティブx64コードの場合、より大きなレジスタセットといくつかの追加の命令が使用できます(たとえば、すべてのx64 CPUはSSEおよびSSE2命令)。これは、ネイティブx64 OSおよびドライバーがより効率的になることを意味します。

より良いRAM使用率

64bは 4 GB全体を使用可能 (および使用可能な場合はさらに多く)です。さらに、一部のOS内部制限(ページ化/非ページ化プール、最大キャッシュサイズ)は 64b OSで増加 です。その結果、メモリページングとファイルキャッシュの両方がより効率的になる可能性があります。

ハードディスクの位置が異なる

同じディスクの2つのパーティションに2つのOSがインストールされている場合、これらの2つのパーティションの1つは 外側のエッジ、一般的に高速です に近くなります。

異なるOS状態

2つのOSがある場合、それぞれが少し異なる状態になっている可能性があります。それらの1つは他の1つよりも断片化されている可能性があり、1つは他の1つよりも少しクリーンなレジストリ、またはインストールされているサービスまたはバックグラウンドアプリケーションが少ない可能性があります。

より良いドライバー

もう1つの可能性は、x64ドライバーは、基本的なアーキテクチャーの違いのためではなく、ベンダーがドライバーの最適化と微調整により多くの労力を費やしたために、x86ドライバーよりも高品質である可能性があります。

64bアドレッシング

私はこれを完全性のためにのみ追加します。日常のアプリケーションの大部分では、この違いは何の役割も果たさないので、ジャスパーが彼の質問で説明しているものとは関係ありません。

大量のデータを処理するアプリケーションがある場合(たとえば、Photoshopで巨大な画像を操作する場合)、64 GBバージョンを実行すると、4 GB以上のRAM=がインストールされている場合に大きな違いが生じます。

「より速い」とはどういう意味ですか?

これが 他の回答に関するコメント のリストです。Jasperが正確に見ることができる「より速いもの」は何ですか。

  • スムーズにアニメーションするウィンドウ

説明するのは難しい。 WindowsアニメーションはWindows 7のGPUによって行われ、GPUは同じです。 CPUの負荷はごくわずかです。 (私はあなたがであると思いますAeroデスクトップを使用しています)。

  • 特定の写真編集プログラムが高速で描画する(x86とx64の両方)
  • (MPC-HC x64で)よりスムーズに実行されるHDビデオ、および全体的により安定したエクスペリエンス。

より良く調整されたドライバー、またはx64を利用するドライバーである可能性があります。

  • はるかに速くコピーされているファイル

より高速なパーティション(OSにはまったく関係ありません)またはx64 OSでのキャッシュ処理の向上が原因である可能性があります。

  • ゲームに変化は見られなかった。

分かります。ゲームのパフォーマンスは、CPUとGPUによって決まります。 CPU制限の場合、制限コードはゲーム自体です。これは、x64 OSへのインターフェースがほとんどない同じx86コードです。したがって、CPUパフォーマンスは同じです。 GPUは同じです。適切にプログラムされたゲームでは、ドライバーとOSのオーバーヘッドが低いため、ドライバーまたはOSの違いはここには表示されません。

8
Suma

警告:これは、あなたが気づいたよりも少し複雑な質問であり、確かにほとんどの回答が描写した以上のものです。少なくとももう少しストーリーをカバーしようとすると、この投稿はかなり長くなります...

まず、ビデオメモリの状況。ビデオカードのメモリ全体は、(少なくとも通常は)CPUのアドレス空間に直接表示されません。通常、CPUから見える128〜256メガバイトのビデオメモリの「ウィンドウ」があります。 GPUはメモリのさまざまな部分をそのウィンドウにマップできるため、通常はCPUからほとんどのGPUメモリに書き込むことができますbut。書き込みを行う前に、書き込み先のGPU。たとえば、DirectXを使用していて、グラフィックスメモリに直接書き込む場合は、それを行うことができますが、そのためには、まずLockRectを呼び出して、GPUが適切なメモリをマップするようにします。ウィンドウに(そして、完了したらすぐにUnlockRectを呼び出して、必要に応じて他のメモリをマップできるようにします)。少なくとも一般的なケースでは、BIOSセットアップでビデオウィンドウサイズを調整できます。

第2に、32ビットモードでも、x86プロセッサは、物理アドレス拡張(PAE)と呼ばれるものをサポートします。これにより、CPUは4ギガを超えるアドレスを指定できます。メモリの。 Microsoftは、Windowsの一部のバージョンでPAEをサポートしていますが、Windows Serverの比較的高価なEnterprise Editionのみです。さらに、プログラムはAWEを使用するように特別に作成する必要があります。これまでに実行したプログラムはほとんどありません(SQL Server Enterprise Editionなど)。結論:それは可能ですが、かなりまれです。

一度に64ビットを読み取る限り、一度に32ビットのみデータを読み取る最後のプロセッサは486でした。Pentium以降、すべてのプロセッサに64ビットのデータバスがありました。 addressバスはデータバスと同じではないため、64ビットデータバスに拡張するとnotになることに注意してください。プロセッサがより多くのメモリで動作できるようにします(ただし、PAEはPentium Proに追加されたため、拡張と同時にalmost 64ビットデータバス)。

Pentiumは1クロックサイクルで64ビットのデータを読み取ることができましたが、内部的には(ほとんど)一度に32ビットのデータを処理していました。より広いバス主には、CPUとメインメモリ間の速度の違いを補うのに役立ちました。 Pentium MMXのMMX命令は64ビットチャンクでのデータの処理をサポートしていましたが、使用するのはかなり扱いにくく、(特に)ほとんどのコンパイラーはMMXコードを生成しなかったため、それを使用するにはほとんどアセンブリ言語で記述する必要がありました。 Pentiumは、浮動小数点数の64ビット(および80ビット)演算もサポートしていましたが、これはほとんどのプログラミングのごく少数の少数派にのみ使用されます(通常、整数を処理するよりも低速でした)。

X86-64デザインには、32ビットx86デザインの2倍の汎用レジスターがあり、これらのレジスターのそれぞれは64ビット幅です。ただし、CPUが32ビットモードで実行されている場合、使用できるのは32ビットCPUに存在していたレジスタのサブセットのみです。

浮動小数点に少し戻ると、32ビットモードでは、浮動小数点演算はIntel 8087演算コプロセッサ用に元々設計された命令セットを使用して行われます。これは、その機能を十分に活用することをかなり困難にするモデルを使用しています。 Intel(およびAMD)は、最近追加された「Streaming SIMD Extensions」、つまりSSEを追加しました。ほとんどの64ビットコンパイラは、8087互換の浮動小数点の代わりにSSEを使用できる、または使用できるコードを生成します。SSEの「SIMD」は、「単一命令、複数のデータ」。これは、oneSSE命令が実行できるtwo2つの別々のデータ部分に対する浮動小数点演算。これは必ずしも速度が2倍にならない通常、速度は少なくとも少しは向上します。

最後に、おそらく少し不公平な比較の部分があることを指摘しておきます。新しいOSをインストールすると、ほとんどの場合、かなり長い間使用されていたOSよりも少なくとも少し高速です。プログラムは、レジストリやハードドライブなどにデータを保存します。追加するデータが多いほど、必要なデータを検索する作業が常に多くなります。 「レジストリクリーナー」などを販売する企業はこの効果を誇張することがよくありますが、いずれにしてもある程度は当てはまります。そのため、ハードドライブを再フォーマットしてまったく同じOSを再インストールするだけだった場合、速度が向上することが期待できます。また、古いOSをインストールして長時間使用した場合は、 、その改善(すべてそれ自体)はかなり実質的です。見られる速度向上の少なくとも一部は、2つのOS間の実際の違いとは無関係である可能性があります。

もちろん、それだけではありませんが、アイデアが浮かび始めます。通常、個々にかなり小さな違いをもたらす多くの機能と同様に、単一の機能が大きな違いをもたらすことはそれほど問題ではありませんが、それらの多くは、全体としてかなり大きな違いを作るために加算(または乗算)します。

7
Jerry Coffin

32ビットと64ビットの関係はありません。

あなたの投稿から、あなたが「64ビットはより速い」とはどういう意味か分かりません。以前に32ビット版Windowsをインストールしていたマシンに64ビット版Windowsを再インストールしたということですか?もしそうなら、ファイル構造の「リセット」は速度の変化を簡単に説明できます。新しいインストールは、特に再フォーマットした場合、ファイルが断片化したり、ディスク領域が少なくなったり、レジストリが乱雑になるなど、古いインストールよりも応答性がよくなります。

また、ドライバーの1つである可能性もあります。たとえば、新しいビデオドライバーは、古いx86バージョンよりも高速で、ベンダーによって最適化されている可能性があります。または、ハードディスクドライバーの方が優れている場合もあります。

4
GrandmasterB

64ビットOSを使用するとシステムが高速になる最も深い理由は、32ビットOSがシステム内のすべてのRAM=)を利用できないためだと思います。

32ビットOSは、32ビット、つまり4GBの物理アドレス空間を制御できます。このアドレス空間には、システムメモリ、ビデオメモリ、IOデバイスなど)が含まれます。したがって、1GBの専用ビデオRAMがある場合、使用可能なRAMから最初のGBを差し引くことができます。他のデバイスはおそらくさらに200MBほど差し引きます。

これにより、わずか2.8 GBのRAM。Windows 7では多くありません;)

一方、64ビットOSはすべてのRAMを利用できます。

2
Pete

簡単に言うと、コンピューターがクロックサイクルごとに64ビット(8バイト)のデータを処理できるためです。プロセッサーは、ワードと呼ばれる事前に設定されたビットの形式でデータを受信します。 x64アーキテクチャの単語は、x86アーキテクチャの単語の2倍のサイズです。プロセッサーは実際にはデータをより高速に処理していない可能性がありますが(Core 2は両方のインストールで2.93 Ghzです)、データをより効率的に処理します。また、コメントで述べたように、プロセッサはRAMから64ビットワードで読み取っているので、すべてのRAMに対処できます。 ウィキペディア

現代のコンピューターのワードサイズについて言及する場合、そのコンピューターのアドレススペースのサイズについても頻繁に言及しています。たとえば、「32ビット」と言われるコンピュータは、通常、32ビットのメモリアドレスも許可します。バイトアドレス可能な32ビットコンピュータは、2 ^ 32 = 4,294,967,296バイトのメモリ、つまり4ギガバイト(GB)をアドレス指定できます。 1つのメモリアドレスを1つのワードに効率的に格納できるため、これは論理的で便利なようです。

64ビットプロセッサの場合、これは2の倍数ではなく、指数関数的に増加します。

最新のバイトアドレス指定可能な64ビットコンピューター—適切なOSのサポートにより、2 ^ 64バイト(または16エクスビバイト)をアドレス指定できます。

この article は少し古くなっていますが、64ビット処理のしくみについて非常に有益な情報です。

実際のパフォーマンスは他の多くの変数(ディスク速度、バス速度、プロセッサキャッシュ、使用可能なメモリなど)に依存しているため、これは実際には2倍のパフォーマンスの向上にはなりません。ただし、より多くのOSをメモリにロードして、プロセッサでより効率的にアドレス指定できるため、Windowsのパフォーマンスが向上するはずです。

2
Supercereal