Snow Leopardへの道: RAM2倍、価格半分、64ビット

Snow Leopardへの道: RAM2倍、価格半分、64ビット

Snow Leopard のカーネルからバンドルアプリまで、全面的に 64 ビット化は、単にメモリ使用量の増加にとどまりません。システム全体のパフォーマンスにも大きなプラス効果をもたらし、Windows Vista の 64 ビット化よりもさらに大きな効果をもたらします。その理由をご説明します。

Snow Leopardに至るまでの64ビットコンピューティングの初期の導入と、システムで実際に使用できるRAM容量に関する問題を概説した第2部の後、この第3部では、特定のアプリが使用できるメモリ量と、追加のオーバーヘッドを伴うにもかかわらず64ビットアドレッシングによってパフォーマンスがどのように向上するかを検証します。続く第4部では、64ビットアプリ市場の展開と、Appleがデスクトップにおける64ビットのパイオニアとしてどのように取り組んでいるかについて考察します。

Mac OS X Snow Leopardへの道: 64ビット

Mac OS X Snow Leopardへの道:64ビット、サンタローザ、そしてPCの大詐欺

Mac OS X Snow Leopardへの道:RAM2倍、価格半減、64ビット

Mac OS X Snow Leopardへの道:64ビットアプリの未来

システムRAMとアプリRAM

前述の4GB制限は、一般ユーザーに影響を与え始めたばかりですが、特定のアプリケーションが搭載メモリを最大限に活用できない別の問題があります。実際、RAM不足のアプリケーションにとって真の問題は、マシンに搭載できるRAMの容量ではなく、単一のアプリケーションまたはプロセスが自身で処理できるメモリ量の制限です。 

Windows、Linux、Mac OS Xの32ビット版では、4GBの制限に対する処理方法が異なっていました。つまり、64ビットへの移行によってユーザーにとって得られる改善のレベルはそれぞれ異なります。LinuxとMac OS Xの32ビット版では、カーネルが自身と各アプリ(またはプロセス)用に32ビット、4GBの仮想メモリ空​​間を割り当てます。仮想メモリシステムは、搭載されているRAMの容量を最大限に活用するために、必要に応じてメモリをシャッフルします。もちろん、RAMの容量が多ければ多いほど良いというわけではありません。

32ビットWindowsでは、すべてのアプリが使用できる仮想アドレス空間は2GBのみです。32ビットアドレスで提供される4GBの空間はカーネルによって分割されます。デフォルトでは、この分割は2GBずつ行われ、アプリは2GBを動作用に使用し、残りの2GBはカーネルが確保します。特別な設定をすることで、Windowsは3GBと1GBの分割に調整し、アプリにもう少し余裕を持たせることができますが、Windowsでは4GBのアドレス空間をフルに利用することはできません。これは、システム上で大量のRAMを使用するすべてのアプリに影響を与えます。 

Windowsがメモリを分割して割り当てる理由は、パフォーマンスにあります。Windowsのシステムコールは、アプリケーションとカーネルにマッピングされたメモリ位置を同時にアドレス指定できます。これは、CPUが「トランスレーション・ルックアサイド・バッファ」(TLB)と呼ばれるキャッシュされたルックアップテーブルを使用して、アプリケーションのRAMとカーネルのRAMを同時に直接アドレス指定できるためです。 

RAMの増設で責任も増す

対照的に、32ビット版のLinuxとMac OS Xでは、各アプリケーションに4GBの仮想メモリが割り当てられますが、それらのアドレスはカーネルの4GB空間で使用されるアドレスと共有(重複)します。つまり、CPUのTLBはキャッシュされたアドレスを保守できません。なぜなら、これら2つのアドレスを区別する方法がないからです。

仮想メモリシステムは、2つのアドレス空間間を移動するたびにCPUのTLBをフラッシュする必要があります。32ビットシステムコールごとにTLBが2回フラッシュされ、キャッシュが繰り返しゼロに戻され、本来の性能が損なわれます。Windowsでは、各アプリケーションがカーネルと仮想メモリ空​​間を分割しているため、この現象はシステムがアプリケーションを切り替えるときにのみ発生します(上記参照)。 

64ビット版Mac OS X Leopardでは、64ビットアプリは4GBのメモリ領域を超過する大規模な仮想メモリ割り当てを受けます。これにより、カーネルが下位アドレス空間を使用する一方で、64ビットアプリは上位アドレス空間を占有できます。共有アドレスの重複がないため、TLBをフラッシュする必要がなく、意図したとおりに動作します。この潜在的なメリットはまだ十分には実現されていません。なぜなら、LeopardのカーネルとほとんどのMacアプリは依然として32ビットだからです(左下)。

Snow Leopardは64ビットカーネルと64ビットバンドルアプリのフルセットを提供し、新しいカーネルは32ビットアプリの実行時でもアドレス空間を共有する必要がないため、TLBフラッシュの問題が完全に解消されます(右下)。これは、Core 2以上のCPUを搭載したすべての64ビットMacユーザー、さらにはSanta Rosaプラットフォームスタイルのチップセットを搭載していないユーザーにもメリットをもたらします。64ビットコードと仮想メモリの実行は、アドレス指定可能なシステムRAMの容量に左右されないからです。 

ユキヒョウへの道

より多く、より良く、より速く

今日の32ビットMacアプリは、32ビットWindowsアプリよりも多くのメモリにアクセスできますが、アプリ間の切り替え時だけでなく、アプリがシステムコールを実行するたびにTLBフラッシュのパフォーマンスが低下します。64ビットアプリでは、Leopardは事実上無制限のアドレス指定により、より優れたパフォーマンスを提供します。 

64 ビット Windows では、アプリは最終的に 2 GB の制限を突破しました (16 TB のアドレス空間をカーネルで半分に分割するようになりました)。ただし、Windows ではその問題に対処していなかったため、TLB に関連する新しいパフォーマンス上の利点はありません。 

どちらのプラットフォームも、このシリーズの最初の記事で述べたように、32ビットx86アーキテクチャには決定的に欠けているx64の追加レジスタを活用できるというメリットがあります。これは、PowerPC G5ユーザーが汎用アプリケーションを64ビットに移植してもパフォーマンス上のメリットをあまり得られない理由でもあります。32ビットPowerPCアプリケーションには既に十分なレジスタが搭載されているからです。多くの場合、追加のアドレスオーバーヘッドにより、実際にはわずかに速度が低下します。これは、Snow LeopardがIntelのみで動作する主な理由でもあります。 

64ビットのダークサイド

もちろん、Intelで64ビットアドレスを扱うには、追加のオーバーヘッドも発生します。また、64ビットOSが十分に普及する前に、64ビットアプリの市場を開拓するという「鶏が先か卵が先か」の問題もあります。Windowsの主流は依然として32ビット版です。多くの64ビットPCは、Microsoftがすべてのアプリをシームレスに実行できる単一のOSを提供していないため、32ビット版Windowsを搭載して販売されたり、最終的に32ビット版Windowsで動作したりしています。 

Windows 64ビットユーザーからは、多くの32ビットアプリ、ドライバー、コーデック、ユーティリティが未対応、あるいは正常に動作しないことへの不満の声が上がっています。これには、Microsoft独自のOffice Document Imagingツール、Silverlight、Windows Media Playerなどが含まれます。また、64ビットカーネルとアプリは32ビットドライバーやプラグインでは動作しないため、64ビット版SilverlightやFlashがないため、多くのユーザーが64ビット版Internet Explorerを実行できません。さらに、Microsoftが64ビット版Windowsを提供した方法は、アプリ開発者にとって問題を引き起こしています。Adobeが64ビット版Photoshop CS4のベータ版ユーザーに警告しているように、システムへの簡単な変更やカスタマイズで全てが台無しになってしまう可能性があるのです。 

対照的に、AppleのMacはすべて64ビット化され、64ビットOSが動作しています。これは、Appleの64ビット展開が比較的スムーズに進んでいることによる、導入を妨げる問題がないためです。ただし、AdobeからApple自身に至るまで、人気の64ビットMacアプリが不足しているという問題は別です。Appleはカーネルとアプリに64ビットドライバとプラグインを提供し、サードパーティにも同様の対応を求める必要があります。次の記事では、64ビットアプリ市場と、AppleとサードパーティがMacプラットフォームにおける64ビットの技術的優位性をどれだけ早く活用できるようになるかについて考察します。