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


11

ほとんどの場合x86を使用しているのに、Windows 7 x64が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
マザーボード:Intel D945GCNL
グラフィックス:ATI Radeon HD 4350 @ 1 GB専用
オーディオ:M-Audio FastTrack Pro
HDD:Samsung HD753LJ 733 GBおよびSamsung HD160JJ 156 GB

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


4
まず、64ビットWindowsは割り当てられたすべてのRAMを使用します。

3
なぜあなたはそれが速いことを気にしますか?それが嬉しいはずです。
マットH

@Randolphそれはわかりますが、それはx86にどのように影響しますか?@マットいいえ、もちろん嬉しいです。とても興味があります。私の人生では、なぜそれが起こっているのか理解できません。
ジャスパー

あなたはそれを見ることを期待しているので、あなたはこの効果をほとんど想像しています。速度は、32ビットから64ビットへのステップよりもはるかに重要な多くの要因によって、PCとPC内で異なります。新たにインストールされたPCは、ビルドされたクラフトが少ないため、純粋に高速に見えます。
ジェームズライアン

回答:


8

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

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つの可能性は、x64ドライバーの品質がx86よりも優れている可能性があることです。根本的なアーキテクチャの違いによるものではなく、単にベンダーが最適化と微調整に努力したためです。

64bアドレス指定

日常的なアプリケーションの大部分については、この違いは役に立たず、Jasperが彼の質問で説明していることとは無関係です。

大量のデータを処理するアプリケーションがある場合(たとえば、Photoshopで巨大な写真を使用する場合)、4 GB以上のRAMがインストールされている場合、64bバージョンを実行すると大きな違いが生じる可能性があります。

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

以下は、他の回答に対するコメントからのリストです。ジャスパーが見ることができる「より速いもの」とは正確には何ですか:

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

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

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

より適切に調整されたドライバーまたはx64 、.

  • ファイルがはるかに高速にコピーされる

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

  • ゲームに変更はありませんでした。

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


私は、GrandmasterBの回答に関する私の経験についてコメントしました。経験は、同じマシンTWICEにインストールされたもの(特に、Windows独自の機能)と同じ(量)の偶然とどのように一致しますか?Windows 7はx64向けに何らかの形で最適化されていましたか?ハードウェアベンダーはx64ドライバーにもっと注意を払っていますか?プログラムとマシンの両方が一貫した違いで同じままである場合、あるものが他の方法よりも最適化されているようです。
ジャスパー

私はあなたの特定のケースでの経験が偶然であると主張していません。ただし、完全な説明のために、そのような可能性は一般的なケースで考慮されるべきです。たとえば、内部/外部パーティションは、ロード時間に大きな違いをもたらす可能性があり、64b / 32b OSとはまったく関係ありません。
須磨

ただし、少し情報を追加したいと思います。7(この場合、最初の2つのx86インストールと最後の2つのx64インストール)をインストールするたびに、以前のインストールを完全に消去して常に同じドライブに新しくインストールしました。デュアルブートは一切関与しませんでした。笑。はい、私はドライブを手付かずにしました。
ジャスパー

その他:1080pモニターでAeroを使用しています。また、完全な形式ではなく、常にクイック形式を実行しました。
ジャスパー

「以前のインストールを完全に消去して、常に同じドライブに新しくインストールしました」知っておいて、これは「外部パーティションの高速化」の可能性とOS状態の可能性を排除します。
須磨

16

x64アーキテクチャの変更点は、32ビットから64ビットへの変更だけではありません。x64は、さらにCPUレジスタと新しいCPU命令を追加します。これらを利用する方法を知っているオペレーティングシステムは、同じハードウェアからわずかなパフォーマンスバンプを取得できます。ああ、かつてビデオカードにアドレス指定されていた1 GBのRAMを取り戻しても、問題はありません。


実際、x64であっても4 GBのうち3.25 GBしか使用できません。x86から​​のアップグレードでこれが修正されると思っていましたが、修正されませんでした。
ジャスパー

ビデオメモリの+1、彼がvidカードを持っていることにも気付きませんでした。
スーパーシリアル

3
@Jasper:正しいかどうかはわかりませんが、コンピューターの1つがインストールした8 GBのRAM全体を使用しています(Win 7 x64 Ultimate)
xbonez

これは本当に私にとって理にかなっている唯一のものです。同じシステム上で同じOSの32bおよび64bエディションを実行する場合、他のすべては同じです。2つの違いのみがあります。1)レジスタと命令セットの強化2)64 GBのアドレス空間により、4 GB以上のRAMまたはRAMなどをフルにアドレス可能
Suma

それでも、完全を期すために、1 GBのRAMを隠している1 GBのカードに関する部分は間違いです。4GBのRAM、32b OS、およびそのようなカードを持っている人なら誰でも簡単に目撃できます(Peteの答えに対する私のコメントも参照)。
須磨

7

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

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

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

一度に64ビットを読み取る限り、一度に32ビットのみデータを読み取る最後のプロセッサは486でした。Pentium以降、すべてのプロセッサには64ビットのデータバスがあります。そのノートアドレス 64ビットのデータバスに拡張することはなかったので、バスは、データバスと同じではないではないことが起こるように、PAEは、ペンティアムプロに加え、が(より多くのメモリを持つワークにプロセッサを許すことに、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)は、最近「ストリーミングSIMD拡張機能」、つまりSSEを追加しました。ほとんどの64ビットコンパイラは、8087互換の浮動小数点の代わりにSSEを使用できる/しないコードを生成します。SSEの「SIMD」は「単一命令、複数データ」の略です。これは、1つの SSE命令が2つの別々のデータに対して2 つの浮動小数点演算を実行できることを意味します。これは必ずしも速度を2倍にするわけではありません、通常は速度を少なくとも少し改善します。

最後に、一般的に少し不公平な比較の一部があることをおそらく指摘する必要があります。新しいOSをインストールすると、かなり長い間使用されているOSよりも、少なくとも常に少し速くなります。プログラムは、データをレジストリ、ハードドライブなどに保存します。追加するデータが多いほど、特定の時点で必要なデータを見つけるための作業が多くなる傾向があります。「レジストリクリーナー」を販売する企業などは、この効果を頻繁に誇張しますが、とにかくある程度は真実です。そのため、ハードドライブを再フォーマットし、まったく同じOSを再インストールするだけであれば、速度の改善が期待できます-古いOSを長期間インストールして使用している場合その改善(全て単独で)、CANかなり充実しています。表示される速度の改善の少なくとも一部は、2つのOSの実際の違いとは無関係です。

もちろん、それ以上のものがありますが、あなたはアイデアを得ます。1つの機能が大きな違いを生むことはそれほど問題ではありません。多くの機能は通常、個々にかなり小さな違いをもたらしますが、それらの多くは、全体としてかなり大きな違いをもたらすために足し合わせます。


これは非常に良い説明です。多くの32ビットバイナリは、XPなどのWindowsの多くのバージョンで動作するように設計されていることを知っておくことが重要です。i386または少なくともi586で実行する必要があります。AMD64はPentium 4未満をサポートする必要はありません。もちろん、もしあなたが再コンパイルできるオープンソースであれば、SSEの程度があります。
-mckenzm

4

32ビットと64ビットとは関係ない場合があります。

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

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


1
いい案。「より速く」が実際に何を意味するのかをもっと知ることは助けになるでしょう。アプリケーションの読み込みは速くなりますか?ウィンドウのアニメーションは速くなりますか?ゲームはより高いfpsを持っていますか?ファイルはより速くコピーされますか?ここでの説明はすべて可能ですが、32bと64bのOSの違いを理解するのは興味深いですが、実際にはJasperが説明する実際の違いとは無関係です。
須磨

申し分なく、私が話していることのより明確な写真をお見せしましょう。しばらくの間、必要なソフトウェアとゲームの100%がインストールされたWindows 7 x86がありました。同じマシンに同じシステムを同じ量のソフトウェアとゲームとともに再インストールしましたが、まったく同じ体験ができました。レジストリを1日に1回クリーニングし、数日ごとにハードドライブを断片化し、常に各ドライブに十分な空き容量を維持します。とにかく、これらの後、Windows 7 x64を2回インストールし、必要なものを100%入れて、後者の両方のエクスペリエンスが同じであることがわかりました。[続行]
ジャスパー

気分が良くなったこと-ウィンドウがよりスムーズにアニメーション化され、ファイルがはるかに高速にコピーされ、特定の写真編集プログラムがより高速に描画(x86とx64の両方)、HDビデオがよりスムーズに実行(MPC-HC x64)、全体的に安定したエクスペリエンス ゲームに変更はありませんでした。
ジャスパー

ほら、これはささいなことです。しかし、私はこの質問を生み出したこれらのささいなことが起こっている理由を理解していません。=)4 GB以上のRAMがあれば気にしませんでした。私はWindows 7 x64がそれを処理できると信じていましたが、ここではそうではなく、少し複雑になっています。
ジャスパー

2

簡単に言うと、コンピューターがクロックサイクルごとに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倍ではなく、指数関数的に増加します。

適切なOSサポートを備えた最新のバイトアドレス指定可能な64ビットコンピューターは、2011年時点で実質的に無制限と見なされている2 ^ 64バイト(または16エクスビバイト)に対応できます。

この記事は、少し古くなっていますが、64ビット処理がどのように機能するかについて非常に有益な資料です。

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


13
「クロックサイクルごとに64ビット(8バイト)のデータを処理できます」これは妥当に聞こえるかもしれませんが、実際にはナンセンスです。有用なもののために8バイトを使用する計算はほとんどありません。メモリトラフィックに関しては、基礎となるCPUは同じであり、キャッシュとメモリトラフィックは同じBUSを使用します。
須磨

5
「より多くのOSをメモリにロードできるため」再び、真実ではありません。これは、「OSの詳細」が4 GBを超える場合に当てはまります。64 GBのアドレス指定は、4 GB未満のデータを操作しているときにはまったく役に立ちません。
須磨

6
@Kyle:質問をもう一度読んでください。プロセッサは、同じことが同じマシン上にあるよう。これは、2台のマシンの違いではなく、同じマシンでのOSの動作の違いに関するものです。そしてfyi、私は議論を続けたいです。人々に大声で叫ぶことは誰にも役に立たなかった。さらに、私はコンピューターユーザーであり、これはコンピューターユーザーの質問です。それで、なぜ私はそれに答えるべきではないのですか?
ジョリスメイズ

6
いくつかの塊をとるのに十分な厚さのスキンがないと、公開フォーラムで答えることはできません。また、質問と回答のすべての詳細を選択するコンピューターオタクの退屈な性質を処理できる必要があります。パンチを抜かないでくださいが、投稿には十分な注意を払ってください。あなたの証明された間違いとして修正を行い、あなたの正しいときにあなたの地位に立ちます。
WernerCD

6
「より多くのOSをメモリにロードし、プロセッサによってより効率的にアドレス指定できる」という部分はまったくのゴミです。Win7は約500MBのRAMを使用しますが、これは32ビットCPUが制限されている4GBの制限を大きく下回っています。ポインターはメモリ内の2倍のサイズであり、貴重なデータキャッシュをより多く使用するため、アドレス指定は、どちらかといえば効率的ではありません。実際のパフォーマンスの向上は、より大きなレジスタセットから得られます。L1キャッシュのデータの操作は3クロックサイクルで、レジスタのデータの操作は1クロックサイクルです。
-zvrba

2

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

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

これにより、アプリケーション用のRAMは2.8 GBのみになります。Windows 7ではあまりありません;)

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


「1GBの専用ビデオRAMがある場合、使用可能なRAMから最初のGBを差し引くことができます。」私はここでそのような迷惑になってすみませんが、これは真実ではないようです。4 GB RAMと1 GBの専用VRAM GPUを備えたWinXPシステムがあり、システムに3.6 GBのRAMが使用可能でした。アドレス空間の質問は非常に複雑です。たとえば、プロセスには4 GBの仮想アドレス空間があります。ドライバーは、アクセスできるようにGPU RAMを仮想アドレス空間にマップする必要がありますが、OSがGPU RAMを物理RAMにマップする必要はありません。
須磨

@Sumaは、おそらくすべてのVRAMが物理RAMにマップされているわけではありません。しかし、32ビットWindows XP、Vista、および7は、4GBを超える物理アドレススペースを使用できません。一部の32ビットサーバーバージョンのWindowsは、物理アドレス拡張を使用してより多くのアドレスを指定できます(32ビットデスクトップウィンドウOSで物理アドレス拡張を有効にできますが、それでも4GBを超える物理アドレススペースのアドレス指定は拒否されます)。したがって、4GBのRAMを32ビットWindows 7に配置すると、すべてを使用することはできなくなります。プロセスの仮想アドレス空間はこの制限とは関係ありません
ピート

「しかし、32ビットWindows XP、Vista、および7は、4GBを超える物理アドレス空間を使用できません。」はい、その通りです。詳細な説明については、codinghorror.com / blog / 2007/03 /…を参照してください。GPUは間違いなく4 GBのスペースの一部を消費します。私は、アドレス空間がGPU RAMにアクセスする必要があるという一般的な誤解を修正したかっただけですが、実際にはそうではありません。superuser.com/questions/242562/…の説明は、この点で正しいです。
須磨

-1

2つの別個の同一のLenovo x100eノートブックに32ビットと64ビットをインストールしました。32ビットには2G RAMがあり、64ビットには4G RAMがあり、32ビットはより速く、よりスムーズに動作し、64ビットよりも遅延が少なく、応答が遅く、応答が遅くなりました。CPUは64ビットCPUです。同じドライバーがインストールされ、両方でWindowsの更新が行われます。64ビットはハイエンドマシン用であり、x64 CPUでもエントリレベルではないと思います。


これは間違っています。x64マシンの「ユーザーエクスペリエンス」は、x86アプリのほぼ90%を実行しているため、かなり悪い場合があります。
フランシスコタピア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.