プロが教えるわが家の防犯対策術!

まだ7が出ていなかった頃だと思うんですが、64bitのOSにした場合、メモリの使い方が違うので4GBとか32bitの感覚で積んでると、逆にパフォーマンスが下がることがあると聞いたことがあります。
だから最低でも6GBは積んでおけという内容だったと思います。

その時、64bitOSなんて無縁でしたから真偽を確かめることもしなかったんですが、これって本当なんでしょうか?

Windows7や8の場合はどうですか?
肯定・否定ともに根拠も示していただけると助かります。

A 回答 (6件)

この質問に記載されている「メモリの使い方が違うので」という点で言えば、それは厳密には正しい解釈ではありません。

まあ、誰にでも分かるように言えば、そういう言い回し(かなり端的に言えば)も以前はありました。

まあ、パフォーマンスが落ちると仮定するとそれは別の部分にあります。

これは、Windowsに限ったことではありませんが、
基本的に該当のOSがどのOSのバージョンで扱うアプリケーションがどういうものかによります。

最初の一般というかビジネスも含めたスタンドアロン(確かOEMのみでしたけど)の64bitはWindowsではWindows Professional 64bit-Editionです。これは・・・知らない人の方が多いと思います。今でもWindows XPはアップデートサポートがありますが、この製品は既にサポートが終了しています。何せLUNAにも対応しないものでしたし。現行の64bit技術であるx64(x86-64)とは別物でした。32bitコードのアプリも直接実行できましたが、IA-64側のエミュレーション性能も想定以上に遅く、WOW64もまだ十分とは言えなかった。
AMDが、x86で64bit化(x64)を果たさなければ、これが主流になるはずだったのです。
これが、Windowsのスタンドアロンにおける64bit歴史の始まりです。

多くの人が、64bitを身近に感じるようになるのは、まだ先の話です。

WindowsXP Professional x64 Editionの場合は、メモリが4GB未満の場合、32bitアプリケーションを使うと、WOW64の動作パフォーマンスがまだ十分ではなかったため、レジスタの性能が発揮できないケースがあり、32bitアプリケーションでは動作速度が低下することがあります。これはメモリのアクセス性能が落ちるのではなく、32bitから64bitにソフトウェア変換する中間関数が絡むため、処理がワンステップ以上増えるからです。
これが、x64の強みを越えて出てくると、速度が遅くなるという話になります。

それに対して、x64ネイティブアプリケーションであれば、基本的に追加された8本のx64レジスタを使えるため、全般として性能は向上します。また、演算のアドレス幅も増えるため、これまでに比べて大規模な処理が1回のパスで通るようになります。そこで、64bit処理が32bitに対して倍以上アドバンテージを付けることもあるのです。メモリの量は基本的に関係ありません。

XPのx64時代は実を言えば、遅くなるという話が比較的多くありました。その理由は、64bitソフトウェアがあまり活発に開発されていなかったこと。中間コードが少なく、互換性にもいくつかの問題があったことが理由です。それが変化するのは、Vistaからとなります。

Windows Vistaや7では、32bitであっても多くで64bitと大差ない処理ができるように、対となるAPIを多く提供することで、XPx64より32bitアプリケーションでの性能と互換性を高めています。特に、7さらに8では32bitアプリケーションもネイティブ32bitのOSよりも、高速に動くケースが多いです。

基本的には同じアプリケーション環境で同じハードウェア構成なら、大半は遅くなることはないでしょう。それでも、OSが持っていないAPIをキックするような一部のアプリケーションは起動しなかったり、遅くなるかもしれません。

これは、アプリケーション開発とOSの特性によって左右されるものであるため、OSのみで考えた場合は、全般的に使えるCPU回路が増えるため高速になるのが普通です。しかし、Windows上で使うアプリケーションが32bitだと、一部は動作に無駄な変換工程が増え、それに加えて高速な64bit回路が使えなくなるため、そのアプリケーションが遅くなることがあります。もし、それが常駐なら、OSの動作も遅く見えるようになります。それだけの話です。
ただ、最新のOSではそれらも考慮してある程度ソフトウェアが設計され、OSも設計されていますので、昔に比べるとメモリが少なくとも高速または32bitと同等に動く努力がなされています。

即ち、OSとアプリケーションの問題によって、過去にそう思われてもおかしくない状況があったというのが、正しく、メモリの使い方の問題ではないのです。
そして、現在はそれらの問題は過去のものになりつつあります。それは、ソフトウェアが64bitに対応できるように最適化され始めたことと、OSも過去の資産をなるべく円滑に継承できるように、仕組みを改善してきたからです。
    • good
    • 8

>WindowsではWindows Professional 64bit-Editionです。

これは・・・知らない人の方が多いと思います。
知らないと言うよりそんなOSは存在しない。
存在するのは
Windows XP Professional 64-bit Itanium Editionだから。

>WOW64もまだ十分とは言えなかった。
そもそもx86-64が同じアーキテクチャーの32bit(x86)をエミュレートするのとは違って
IA-64はまずx86系とはまったく互換がなくそれをエミュレートすることになる。

>これが主流になるはずだったのです。
インテルはとりあえずは、

>なお、Windows XP Professional x64 EditionがIA-64対応のように書かれている回答がありますが、実際は違います。
そりゃx68(x86-64)はIA-64ではない。
x86-64はIA-32を64bit化したもので
IA-64はx86とはまったく互換がないCPUアーキテクチャー(まぁ一応はエミュレート機能はあるけど)
IA-64はItaniumのアーキテクチャー。
Itaniumはインテルがメインフレームなどの汎用機用に作ったCPU。
    • good
    • 4

雑誌のベンチマークなどでは、64bit環境だと4GBより8GBにしたほうが速くなる結果がでてるものもあります。

(当然、使い方次第です) では、16GBにしたらもっと速くなるのかというと、そうでもなく8GBの時とさほど変わらない結果なので、OS自体が使用するメモリが増えたための影響と考えられるでしょう。とはいっても、ベンチマークだから差がわかるくらいの違いで、体感できるかどうかというと疑問が残る程度の数値だったと思います。(私が読んでいる雑誌は、DOS/V Power Reportです。)


なお、Windows XP Professional x64 EditionがIA-64対応のように書かれている回答がありますが、実際は違います。

Windows XP Professional x64 Edition のシステム要件
http://www.microsoft.com/japan/windowsxp/64bit/f …
    • good
    • 2

 アドレッシングで考えますと、64ビットOSがアクセスするアドレスは4GBを超えますから、32ビットアドレスよりも2倍のアドレスレンジを必要とします。

つまり、64ビットアドレスで4GB以内のアドレスをアクセスすると、上位32ビットは全て0ビットが並んでいるわけです。

 32ビットアドレッシングを64ビットアドレスで考えると、下位32ビットだけが有効で、上位32ビットは存在しないと同じです。ハード的にみて、32ビットアドレスだけのアクセスと64ビットアドレスのアクセスでは、64ビットアドレスの方がアクセスが速くなるとしたら、メモリーの並び方による違いだけでしょう。

 つまり、4GB×2枚のメモリーを64ビットアクセスすると、2枚分を64ビット単位に扱いますが、4GB×1枚でのメモリーで64ビットアクセスすると、1枚分を64ビット単位で扱うので、その違いがアクセス速度の違いになるという意味でしょう。

 また、64ビットOSでは大量のメモリーを使用するので、4GBしかメモリーが無いとHDDとの間のスワッピングが多くなるので、8GBぐらい積んで置いた方が処理が遅くならずに済むという意味だと思います。

 64ビット命令は32ビット命令と違って、実行出来ない命令がいくつかあるようです。レジスタの数も32ビット命令の2倍の16本ありますから、レジスタ数が少ない考え方でプログラムを作った場合と、レジスタ数が多い考え方でプログラムを作る場合では、作り方が違って来ますので、その違いもあるかもしれません。特に、初期設定で全てのレジスタに数値を入れたり、スタックに全レジスタの値を退避する時に、メモリーの消費量や実行時間に違いが生じるはずです。

 細かい点を挙げれば切りが無いですが、性能が大きい構造のCPUには、それ相応のメモリーモデルが必要だという意味でしょう。

参考URL:http://ascii.jp/elem/000/000/643/643581/
    • good
    • 4

原理だけでいえば、64bitになったとしてもメモリアドレスのマップで消費する分が増える程度で、4GBを8GBにしないとだめ・・・


みたいなことにはなりません。
ただ、これは原理的な部分という話であって、ソフトウェアの仕様といった部分ではかわる可能性があります。
32bitではメモリ使用に制限をかけていたソフトウェアが、64bitOSにおいては潤沢なメモリを想定してメモリ使用量を増やす設計にする・・・
といったことは普通にあります。

なので
「64bitOSが大量のメモリを必要とする」
というよりも
「64bit対応ソフトウェアはメモリをたくさん搭載して、はじめて本領を発揮できる」
といったほうがいいかもしれない。
そういった点で、64bit環境にするのであれば、メモリを潤沢に搭載するべきであるって意見は当たってますな。
特に現在のAMD64/Intel64環境に関してはIA64のように命令セットネイティブ64bitではないですから、メモリを増やすなどのアドレス空間を利用する用途で拡張しなければ実質64bit拡張するだけ無駄になるだけです。
    • good
    • 1

ベンチマーク結果をご覧ください。

4GB程度のメモリでの動作テストです。
http://ascii.jp/elem/000/000/641/641464/
http://ascii.jp/elem/000/000/457/457279/
そんなことはないです。


たしかにCore2系のCPUは64bitに最適化されていた訳ではないので、32bitアプリを64bitOSで動かすとオーバーヘッドのために若干のパフォーマンスダウンがあり得たのですが、現在のCPUは64bitが最適に動作するようになっていますのでそんなことはありません。

メモリサイズの違いは、32bitと64bitの違いは原則としてありません。あるとしても測定誤差程度の違いですね。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!