Windows7 は 32bit か 64bit か

大昔まだ32ビットのコンパイラどころかアセンブラもない頃、私は32ビットのシステムを開発していました。ちょうどIBMが16ビットの IBM/PC-AT とOS/2にこだわっていた頃のことです。組み込みシステムなので、OSどころかアセンブラもなく、仕方がないので直接メモリにマシン語でプログラムを書くという荒業です。

16ビットシステムであれば、オペランド(メモリの操作番地)はセグメント内であれば8ビットで両手で16進計算できたのですが、32ビットシステムでは、オペランドのアドレスが FFFF:FFFFF で両手では数え切れず、靴下を脱いで足の指も使ってでも計算したいとまで考えたものです。人間の手が8本あれば良いのにと真剣に思ったものでした。

単純な話ですが、16ビットのシステムと32ビットのシステムでは、オペランドのサイズが大きく、バイナリコードでは1.3倍から1.5倍くらいのサイズの違いになります。一般には16ビットシステムより32ビットシステムの方が性能が高いと思われがちなのですが、同じクロックスピードで処理の内容が同じであれば、コードサイズの大きさからメモリからコードフェッチに時間がかかる32ビットシステムの方が遅くなります。それだけ、ディスクやメモリにロードされるコードサイズが増えるわけなので、キャッシュなどのリソースが大量に必要なのは必須なわけです。

たしかに32ビットのデータを4ビットシフトしたりマスクするような操作であれば、16ビットのレジスタで演算を繰り返すより、32ビットレジスタで一発で実行したほうが効率はたかいわけですが、それは対象となるデータサイズによる処理速度の問題であり、単純な制御コードを繰り返す処理であればクロックが影響し、レジスタのサイズは関係ありません。ちょうど、SUNの RISC 系CPUの処理能力が絶賛され、Intel系のCISCの限界が叫ばれていた頃のことです。

さて、なぜこんなことを書いているかというと Windows 7 の本命は 32 ビット版なのか 64 ビット版なのかということです。多くのメディアでは Windows 7 RC版は絶賛され、巷で売れているネットブックでも軽々と動作し、インストールもほとんど問題ないというレポートを見かけます。

実は、私の手元の環境ではほとんど SUSE Linux + XEN 環境での仮想化なので、ほとんど64ビット版でも問題ないのですが、いざ実際にリアル環境で動かそうと思うとほとんど64ビット版はインストールすらうまく行かないケースに見舞われます。 Windows 2008 R2 評価版もリアル環境では動作しませんし、先日購入した Core2 Duo のノートブックもインストールできませんでした。仕方なくこのブログを書いているマシンは32ビット版を導入しています。

Windows 7 RC版のFAQ--中身はUltimate、来年6月まで使えるってご存知?

こちらの CNET の記事にもあるように32ビット版より64ビット版の方が、要求されるメモリも空きディスク容量も大きな値が必要です。今どきのBTO構成でPCを選ぼうとすると、メモリは2Gと4Gでは数千円しか変わらないし、32ビット版では3G強しか認識できないのなら、思い切って64版を入れたいところなのですが、実際にある程度低めのスペックのPCに導入すると、明らかに64ビット版より、32ビット版の方が軽快に動作してインストール時間も早いという印象を受けました。ちょっと驚きました。

また、いくつかの "Windows 7体験記"を読むと、64ビット版で動いたと明示したものがなく、ほとんどは32ビット版だろうと予測できます。また、 Vista(32版?) のドライバを入れればぜんぜん問題ないということもレポートされていますが、64ビット版でチャレンジして全然問題ないレポートはほとんど見かけません。

ということで、私は見事に新しいノートブックへ64ビット版の導入に失敗しました。無線LANしか動かず、物理NICのドライバはフリーズし、シャットダウンやハイバネーションはまずまともに動きません。わざわざ4Gのメモリを積んだ理由がないわけです。

実はPhenomII の X4 8G メモリマシンでは64ビット版が割と問題なく動いており、リソースモニターを見る限り、常時3Gから4Gのメモリが予約されています。これだけメモリを積むとスワップなど発生しないので非常に快適です。たまにヘビーな処理をさせるといきなりリブートすることもしょっちゅうありますが、普段はせいぜいブラウザとかしか使わないわけですから、このリソースの予約状況を見ると、32ビット版の3G強のメモリの壁というのはすぐに問題にぶち当たりそうです。

64ビット版で 8G 使い切った!
Windows7 は 32bit か 64bit か_a0056607_13102044.gif


今後PCの主力は2G標準メモリ+アルファとなると3G搭載というのは中途半端で4G積みたいところです。また、ネットブックの主力の atom も64ビットのレジスタを持っているし、最新のPCでは当たり前のように64ビットレジスタです。これでは32ビット版のメリットがなく、64ビット版を選びたいところなのです。しかし、こうも64ビット版が不安定だといったいどの程度のスペックが Windows 7 の推奨レベルなのか、正直悩むところです。

1033Mb ハードウェア予約 ??? 1.8G使用中
Windows7 は 32bit か 64bit か_a0056607_1461162.gif



32ビット版と64ビット版を両方試してみると、とてもじゃありませんが、単に高級言語で書いたコードを単純に64ビットオプションを付けてコンパイルすればよいというものではなさそうです。32ビットとは明らかに違ったプログラムの作り方が必要で、ドライバだけではなく、アプリケーションの64ビット化にもかなり時間がかかりそうな気がします。単純に言うと64ビット版の Windows 7 は明らかに32ビット版とは別物だと言えます。

今流通している多くのソフトウェアも32ビットが主力である以上、わざわざ64ビット版を選ぶ理由もないのでしょうが、今後キラーアプリケーションの64ビット対応が進むと64ビット化は避けて通れないところでしょう。特に設計、画像映像編集といったヘビーなデータ処理を行う業務では64ビット化は早いとは思いますが、一般的なビジネス用途では中々64ビット化は進まない、というか薦められないなぁというのが正直な感想です。おそらく64版はメーカーが保障する周辺機器、ソフトウェアを使う専用ワークステーションからスタートすることでしょう。

問題は Windows 7 と同じカーネルを使う Windows 2008 R2 です。主力のDBなどは64化が早いとは思いますが、メーカーの完全な動作保障がない限り 64ビット版のみリリースされる Windows 2008 R2 が主力になる日は、まだかなり遠そうな気がします。少なくともコンシューマ向け Windows 7 が鍛えられて SP1 がリリースされて、64ビット環境が安定するまで先は長いのでしょう。

16 ビット版だったWindows 3.1 は 32 ビット版だった Windows 95 とは明らかにルックアンドフィールも機能も異なる中での互換性があったわけなのですが、Windows 7 の 32 bit と 64 Bit で、明らかな差異を感じるヒトは少ないだろうし、自分が使う Windows 7 が 64 版なのか 32 版なのかを理解できるヒトはほとんどいないと思います。その中で 32 版じゃないと動かないとか 64 版は違うドライバ、アプリケーションをインストールしなければならないという事態だけは避けたいところなのです。

となると、やっぱり Windows Server を安定感で選ぶと、今後もしばらく32ビット版が選べる Windows 2003 R2 が主流になるのでしょうか。

-ホームPC、ホームノート-
こういった目的であれば、さまざまな増設機器(プリンタとかスキャナ)あるいはTVチューナーなどがありそうなので、32ビット版ホームが選択肢になるでしょう。まず、VISTA 用32ビットのドライバが容易に手に入りそうです。「今使っている」なら、32ビット版しか選択しはないでしょう。「今持っている周辺機器が使えない」状態を避けるためにも32ビットという選択になります。

-ビジネスノート-
ノートの筐体はメモリ増設の余地があまりありません。当初から積み込んで4Gマックスなら32ビット版しかメリットは出ません。どうせそれ以上メモリは乗せられないのです。それに、この手の目的なら、PHS、携帯電話、通信モジュールなどの付加価値が高いので、安定している32ビットを選択することになります。先日勝った、eMobile のアダプタもドライバは32ビット版しかなかったし ):~< 大抵USBをさすだけで使えるブツは32ビットじゃないと動かないと思って間違えありません。

-ビジネスデスクトップ-
今買うモデルなら32ビット版でしょうが、4Gメモリ以上搭載できるモデルなら64ビット版を考慮してもいいでしょう。プリインストールが64版ならその選択肢しかありません。もっともビジネス用でも4G以上メモリを積む必要があるかどうかでしょう。また、余計な付属品も少ないでしょうし、ネットワークプリンタも高級機であれば64ビット版ドライバがある可能性が高いと思います。ただし、64ビット版のキラーアプリケーションがない限りあまりメリットはないかもしれません。64ビット版で「Windows でしか使えない」というようなプリンタはまず使えないとおもっていいでしょう。周辺機器もアップグレードしましょう。南米の通過単位で世界経済を論じるとか、宇宙に散らばる星の数を正確に数える場合は64ビット版の Excel が必要かもしれません。

-自作機-
自作機で64ビット版を導入することは自殺行為のようなものです。動かないケースが結構あります。ウチのPCはメモリ8G積んでいるよ、と言って自慢するためにメモリを積みましょう。Core i7 で2G×3枚のメモリを買っても無駄な投資になる可能性があります。 Ubuntsu や OpenSuse のようなフリーの Linux の方がよほどまともに動きます。

※ それにしてもどうして Windows7, WS2008R2 の不安定さはなんとかならないのだろうか、とため息をつく

※ Windows 7 互換性ロゴは 64 ビット版も取得条件
「Compatible with Windows 7」ロゴの取得条件は"64bit対応"

今のデバイスはほとんどそのままじゃロゴが付かない(64版では動かない)ということですね。

16ビットのコードは動かないらしいので、古いコンピュータウィルスなんかは動かないでしょう。ウィルス対策としては64ビット版は究極のウィルス対策かもしれません。コンピュータウィルスを作るヒトにとっては、32ビット版と64ビット晩と両方作らなくてはいけないから、混在している環境だったらパンデミックは避けられるという利点があるくらいでしょうか。

もっともXP互換モードもあるので、古いアプリケーションだったら動くよということですが、そこまでして古いアプリケーションを使いたいのなら、さっさと乗り換えたほうが無難だし、古いアプリケーションにこだわっていても、技術者として将来も尊敬されるわけではありません。技術者本人の単なる自己満足です。

ヘルプデスクの担当者は XP か Windows 7 の32bitか64bitかの違いをまずユーザに確認してもらうという手順を抑えておいたほうがよさそうです。「コンピュータぁー(と伸ばすのを忘れないこと)」を右クリックしてプロパテーぃの真ん中くらいに書いてあります。

「あの、デジカメつながらないンですけど」 > 「64版では動きません、買い換えてください」
残念でした。そんな数年が続きそうです。

まだまだ続く
またまた Windows 8 は 32bit か64bit か

Visit My Wev Site 非番のエンジニア
Commented by YUKARI at 2009-10-23 03:32 x
ものすごく参考になりました。
ありがとうございます。

昨日家電量販店にも行き、WEB上でもずっと検討していたのですが、
やっぱり32bitを買おうと思います。

Windows7の64bitのprofessionalを買って
わざわざVirtual PCでXPにして32bitにする・・・
それってどうかな・・・と思いました。
因みに、VAIOはXP Modeは出来ないらしいです。
意味がわかりませんよね。(Zシリーズは確実にできない。)

AdobeのCS4全般を使っているんですけど、
出張先でイラレなどを使ったりするので、モバイル探してました。
Panasonicの店頭モデルで我慢でしょうか。。。
Commented by islandcenter at 2009-10-23 16:49
コメントありがとうございます。4G超えるメモリ使わない限り64版は使えないな、というのが正直な感想です。

販売日に非常にアクセスありました。読者の皆様ありがとうございます。
Commented by ひろひろ at 2009-12-07 23:45 x
64BITのほうが優れていると思い込んでいました・・・・
やはり買うのは32bitにします。
ベンチマークの一覧見たいのがあるといいですよね。
Commented by islandcenter at 2009-12-08 11:59
コメントありがとうございます。今のアプリケーションも32ビットなのでアプリケーションが使えるメモリも32ビットなんですね。64板でディスクキャッシュが効くという点以外あまりメリットありませんでした。逆に、通信機器などは「※32ビットのみ」、というのがおおいようなので、今は32ビット版が安全牌です。
Commented by yasu at 2009-12-31 16:52 x
記事を読ませていただいて、64bitではなく32bitにしたので良かったと思います。質問なのですが、今メモリを2Gにしているのですが、4Gにする価値はどれほどありますか?3Gしか認識できないということで2Gにしたのですが、気になっています。よろしくお願いします。
Commented by islandcenter at 2010-01-01 12:13
コメントありがとうございます。3>4Gはディスクのキャッシュが効くので効果はあります。多くのアプリケーションは32ビットアクセスなので、あまり効果はないとおもいます。3.2G程度しか認識しませんが、4Gまで積めるだけ積んでも後悔する必要はないと思います。
Commented by islandcenter at 2010-01-01 12:17
×3>4 ○2>4です。今の時代であれば4Gあれば快適です。
Commented by Anonymous at 2010-09-26 11:40 x
今では自作PCにも64bitOS積むのが普通。
何が自殺行為なんだか。
Commented by islandcenter at 2010-09-26 19:00
こんな古い記事にコメント有難うございます。
今メモリ安くなりましたからね。
Commented by bob at 2011-04-09 11:21 x
32bitコードと64bitコードは何が違うんですか?
Commented by islandcenter at 2011-04-09 13:08
コメントありがとうございます。オペランドのサイズが違います。
例えば mov ax,[16bit] > mov eax.[32bit] mov exax,[64bit] では同じ操作でも3ビット、5ビット、9ビットとサイズが増えます。それだけプログラムバイナリのサイズが増えるということです。
Commented by bob at 2011-04-09 17:23 x
ご返答ありがとうございます。
オペランドが増えるとなぜ処理能力が上がるんでしょうか?
Commented by islandcenter at 2011-04-09 17:50
逆にオペランドのサイズが大きくなるので、プログラムサイズが増えてしまいます。ディスクやキャッシュに影響が出るんですね。ただしグラフィックスなどの大きなデータを処理する場合は64ビットを一度に処理できるので簡単な命令で動きます。
しかし、市販のソフトウェアは 32/64 両方で動かすため、ほとんどが32ビットで書かれています。なのであまり64ビットの効果がでないと思います。
by islandcenter | 2009-05-30 13:27 | Windows 7 | Comments(13)