来年リリース予定のMac OS X 10.6リファレンスリリースでは、新OSのセールスポイントとなる顧客向けのマーケティング機能に重点を置くことなく、システム全体にわたるテクノロジーアップデートを提供することが約束されています。64ビット対応をはじめ、これらの舞台裏で行われる機能強化が、ユーザーにとってどのような意味を持つのか、以下にご紹介します。
後続のセグメントでは、システムにインストールして実際に使用できる RAM の量、特定のアプリが自身で予約できるメモリの量、追加のオーバーヘッドがあるにもかかわらず 64 ビット アドレス指定によって OS が高速化される仕組み、64 ビット アプリの市場がどのように展開しているか、Apple がデスクトップで 64 ビットをどのように開拓しているかなど、関連する問題についてさらに詳しく取り上げます。
Mac OS X Snow Leopard 1への道: 64ビット
2: 64ビット、サンタローザ、そしてPCの大詐欺
3: RAMが2倍、価格が半分、64ビット
4: 64ビットアプリの将来
64ビットへの進歩
1980 年代を通じて、パーソナル コンピュータは 8 ビット アーキテクチャから 16 ビット アーキテクチャ、そして 32 ビット アーキテクチャへと急速に移行し、それぞれの進化により、オペレーティング システムとそのアプリケーションは、より多くのメモリをアドレス指定できるようになり、利用可能なメモリをより効率的に処理できるようになりました。80 年代初期の 8 ビット コンピュータは、16 ビット メモリ アドレス指定の上限である 64K しか直接アドレス指定できませんでした。初期の Apple II システムは、2 つのバンクを切り替えて 128K を提供していました。20 ビット アドレス指定の DOS 8086 PC は、なんと 1MB もの RAM を処理できましたが、オーバーヘッドによって実質的に 640K しか使用できませんでした。これらの初期のマシンは、CPU のアーキテクチャ、メモリ アドレス バス、およびデータ レジスタ (命令の読み込みと格納に使用) のビット幅がすべて異なる場合があるという事実も浮き彫りにしています。
同様に、1984年のMacintoshでは、24ビットアドレス指定の32ビット68000プロセッサが採用され、理論上は「わずか」16MBしか使用できませんでしたが、当時は到底手の届かないRAM容量でした。この一見高い制限は、メモリを大量に消費するアプリケーション、特にグラフィカルコンピューティングやマルチタスク処理の要求が増大するアプリケーションにとって、最終的に問題となりました。
80年代末までに、AppleはMac IIの68020プロセッサと「32ビットクリーン」なMac System 7ソフトウェアを搭載し、完全な32ビットハードウェアを実現しました。これらを組み合わせることで、アプリケーションとシステムは理論上、最大4GBの直接アドレス指定可能なメモリを使用できるようになりました。1995年までに、MicrosoftはIntelの32ビット80386および486 CPUを活用するため、Windows NTおよびWindows 95に独自の32ビットWindows APIを搭載しました。
他にもいろいろ
10年後、32ビットメモリの4GBという制限は、家庭用コンピュータでさえも逼迫し始めました。この不可避的な状況に対応するため、Appleは1994年にPowerPCへの移行を開始し、64ビットコンピューティングへの進歩を遂げ、これまで使用していたMotorola 680x0プロセッサの限界を打ち破りました。PowerPCは、IBMの最新の64ビットPOWERアーキテクチャの縮小版であり、32個の独立した32ビット汎用レジスタを備えていました。一方、Intelの32ビットx86は16ビットプロセッサの拡大版であり、8個の32ビット汎用レジスタしか備えていませんでした。x86におけるレジスタの不足は、潜在的なパフォーマンスに大きな制約をもたらし、開発を複雑化させました。
64ビットCPUへの移行に先立ち、RAM容量の制限問題に対処するため、Intelは32ビットx86チップに「物理アドレス拡張」(PAE)のサポートを追加しました。PAEは36ビットメモリアドレッシングの一種を提供し、RAM容量の制限を4GBから64GBに引き上げました。PAEを使用すると、各アプリケーションは依然として4GBしかアドレス指定できませんが、オペレーティングシステムは各アプリケーションの限られた割り当てを、コンピューターに搭載されている物理RAMにマッピングできます。
32ビットPCで4GBを超えるRAMを使用するには、OSカーネルでPAEをサポートする必要があります。Microsoftは、この追加RAMをWindowsのEnterprise、Datacenter、および64ビット版でのみサポートしています。Windows XP、Vista、Windows Serverの標準32ビット版は、いずれも物理RAMの使用量が依然として4GBに制限されており、そのうち約3.5GBを超えるRAMにフルアクセスすることはできません。そのため、この制限はデスクトップWindows PCユーザーにとってますます深刻な問題となっています。
90年代後半には、Windows NTはDigitalのAlpha、MIPS、PowerPC、そしてIntelの不運なItaniumといった64ビットアーキテクチャに移植されましたが、これもハイエンドワークステーションユーザーにしか恩恵をもたらしませんでした。Apple自身も90年代半ばにPowerPCへの移行を進め、Macプラットフォームの64ビットコンピューティングへの移行を容易にしましたが、真の64ビットハードウェアが導入されたのは2003年のPowerMac G5になってからでした。G5プロセッサは32個の独立した64ビットGPRと42ビットMMU(メモリ管理ユニット)を搭載し、4TBのRAMを直接アドレス指定できましたが、PowerMac G5のハードウェアは8GBに制限されていました。
主流のPCは32ビットの慣例に固執していましたが、AMDが2003年に「AMD64」アーキテクチャを採用したOpteron CPUをリリースしました。これは、Intelの全く新しいItanium IA-64設計よりも、64ビットの世界へのアップグレードにとってより現実的な選択肢であることが判明しました。x86-64やx64とも呼ばれるこの新しい64ビットPCは、16個の64ビットGPRと、16EB(1600万TB)のRAMをアドレス指定できる64ビットメモリバスを提供することで、PowerPCにほぼ追いつきました。AMDのx64プロセッサは、理論上、ハードウェアで48ビット、つまり256TBをアドレス指定できます。実際には、現在、44ビット、つまり16TBを超える仮想メモリをサポートするPCオペレーティングシステムはなく、当然のことながら、物理RAMの容量はそれよりかなり少なくなっています。
3 ページ中 2 ページ目: 64 ビットへの移行の課題、Windows と 64 ビット、一歩後退、二歩前進。
現在、家庭ユーザーの間でこれほど大容量のRAMが直ちに必要という状況は見られませんが、消費者は32ビットPCの4GBの壁に直面しており、さらにx64への大規模な移行を阻む問題にも直面しています。主な問題は、ハードウェアの潜在能力をオペレーティングシステムソフトウェアによって発揮させる必要があることです。問題は2つあります。1つ目は、システム全体で4GBを超えるRAMを単純に扱わなければならないこと、2つ目は、RAMを大量に消費するアプリケーションが個別に大容量のRAMにアクセスできることです。
64ビットのPower Mac G5ハードウェアを搭載していたにもかかわらず、2003年のMac OS X Pantherにはソフトウェア上の制限がありました。32ビットOSでは、システムは4GBを超えるメモリをサポートできましたが、各アプリケーションはそれぞれ独自の32ビット、4GBのメモリ空間に閉じ込められていました。2005年のMac OS X Tigerでは、デスクトップアプリケーションがプロセスとサーバーを分離し、膨大なメモリアドレス指定を処理できるようになりました。理論上は最大16EBの64ビット仮想メモリと、概念的には42ビット、つまり4TBの物理RAMがサポートされていましたが、市販のMacは依然として8GBのRAMしかサポートしていませんでした。
これを実現するため、TigerはUnix APIの大部分を扱うシステムライブラリであるlibsystemの64ビット版を提供しました。これはLP64モデルに準拠しており、64ビット版Linuxおよび商用Unixとの幅広い互換性を実現していました。また、G5でネイティブ64ビットアプリケーションを実行するために、64ビットPowerPC ABI(アプリケーションバイナリインタフェース)も提供していました。Tigerは依然として32ビットカーネルを使用していましたが(メモリアドレス指定は32ビットに制限されていなかったため、G5に搭載されている8GBのRAMを実際に活用できました)、CocoaまたはCarbon APIの64ビット版も提供されていませんでした。そのため、ユーザーインタフェースを持つアプリケーションは32ビットでなければなりませんでした。
しかし、Tiger上の32ビットグラフィカルアプリは、64ビットのメモリ空間を必要とする膨大なデータセットの数値演算を行う、顔のない64ビットバックグラウンドプロセスを起動することができ、その結果を並列で動作している32ビットフォアグラウンドアプリに返すことができました。Appleはまた、64ビットと32ビットの両方のコードをバンドルしてアプリケーションを展開するメカニズムも提供し、システムが使用中のMacハードウェアに適したバージョンを自動的に実行できるようにしました。Tiger自体も32ビットと64ビットの両方の基盤を提供し、1つのOSをあらゆるMacで実行できるようにしました。これにより、AppleはMacユーザーを64ビットハードウェアへと迅速に移行させることができました。
Windowsと64ビット
一方、64ビットx86 PCで64ビットWindowsアプリを実行するには、別途64ビット版Windowsが必要であり、32ビットアプリは特別な互換環境(下記参照)で実行する必要があります。両方のアーキテクチャで「問題なく動作する」混合コードバンドルを展開するための巧妙なメカニズムは存在せず、64ビットWindows自体もどちらのタイプのPCでも動作させることができません。これは、Vistaで発生した問題と同様に、64ビットWindowsの人気と勢いに冷や水を浴びせています。
これは特に残念なことです。x64 PCで実現される進歩は、10年以上前にMacユーザーや開発者がPowerPCへの移行から得たのと同じ恩恵をPCユーザーが切実に必要としているからです。32ビットPCは、GPRの不足と、32ビットWindowsのデスクトップ版による4GBのRAM制限によって特に制約を受けています。さらに、32ビットWindows自体がその4GBを食いつぶし、アプリとシステムが使用できるRAMは3.5GB以下しか残っていません。そのため、個々のアプリは通常、わずか2GBのアドレス空間に制限されています。
ソフトウェアの互換性、ドライバの不足、その他の問題も64ビット版Windowsへの移行を複雑にし、Windowsの主流ユーザーは32ビット版から抜け出せない状況に陥っています。Windows 7は当初、2010年頃にユーザーを64ビット版に移行する予定でしたが、報道によると、こちらも32ビット版と64ビット版が別々に提供される予定です。
一歩後退、二歩前進
Appleが2006年にIntelへの移行を開始した際、実際には一歩後退せざるを得ませんでした。当初はCore SoloとCore Duo CPUを搭載した32ビットIntelシステムのみをサポートしていたからです。Appleは、Microsoftが直面していたのと同じ32ビットPCの制限に対処する必要がありました。Intelへの移行により、Mac開発者はPowerPCが提供する豊富なレジスタなどの機能を失うことになりました。しかし、Intelの新しい32ビットCore Duoは、他の分野では十分な速度を発揮し、特に老朽化したG4 CPUがMacの足かせとなっていたラップトップにおいて、この問題を回避できました。
年末までに、Appleは新しいMac ProとXserveで64ビットx64 PCアーキテクチャのサポートを拡大し、その後Core 2 Duoを搭載したデスクトップMacも64ビットハードウェアサポートを提供しました。Tigerのアップデートにより、AppleはPowerPC G5と同等レベルの64ビットサポートをx64 Intelプロセッサにも提供しました。
わずか1年の間に、AppleはMac製品ライン全体をIntelへ巧みに移行させただけでなく、ユーザーを急速に64ビットへと移行させる道を切り開き、デスクトップPowerPC勢の最後の一人となるという災難をかろうじて免れた。また、余暇を利用してiPhoneを組み立てる一方で、64ビットOSソフトウェアの次なる飛躍に向けて開発を進めていた。
3 ページ中 3 ページ目: Leopard の 64 ビット GUI と Snow Leopard の 64 ビット カーネル。
Leopardでは、Appleは64ビットサポートをさらに拡張し、CarbonとCocoaの上位レベルで64ビットサポートを追加しました。AppleはLeopardで独自のXcodeアプリを提供し、PowerPCとIntelの両方を32ビット版と64ビット版の両方でサポートし、すべて同じアプリケーションバンドルにまとめました。OS全体もユニバーサルバイナリになり、インストール先のハードウェアに関係なく自動的に動作します。ちなみに、Mac OS Xを一般的なPCハードウェアで動作させる際の最大の課題の一つは、PAEをサポートしていない古いCPUではカーネルでPAEを無効にする必要があることです。
Cocoaは現在すべて64ビット化されていますが、AppleはCarbonのユーザーインターフェースAPI(QuickTimeのレガシー部分を含む)では完全な64ビットサポートを提供しないことを選択しました。そのため、開発者はユーザーインターフェースを備えた完全な64ビットアプリケーションを提供するために、Cocoaの最新の同等のAPIを使用するようにアプリを移行せざるを得なくなりました。Carbonは、Tigerが64ビットバックグラウンドアプリをサポートしていたのと同様に、64ビットCocoaフロントエンドと連携する、フェイスレスな64ビットバックグラウンドアプリの構築に引き続き使用できます。Appleは以前、この移行を容易にするために、CocoaをCarbonアプリに混在させるための移行サポートを追加していました。
Appleが64ビット版Carbonの開発を差し控える決定を下したことを受け、Adobeは今春、次期Creative Suite 4はWindows版64ビットアプリケーションとしてのみ提供されると発表しました。CS4のレガシーコードはCarbonベースであるため、Adobeは少なくともCS5まではMacアプリケーションの64ビット版を提供できないと述べています。これは、Photoshopとその関連アプリケーションのインターフェースコードをPhotoshop LightroomのモデルでCocoaに移植する必要があるためです。ほとんどのデスクトップアプリケーションは必ずしも64ビット対応を必要としませんが、Photoshopは非常に大きな画像ファイルを使用するため、移植の有力候補となっています。
現在、Mac OS X Leopardは32ビットカーネル(下記参照)上で32ビットと64ビットの両方のアプリケーションをホストしています。PAEを使用することで、32ビットカーネルはMac ProとXserveの32GBのRAMをアドレス指定できます。Appleのコンシューマー向けマシンは4GBのRAMしかサポートしていませんが、32ビットオペレーティングシステムとは異なり、4GB全体を使用できます(適切なハードウェアサポートが必要です)。Leopardの32ビットカーネルにより、Appleは64ビット開発ツールを出荷できるようになりました。これにより、開発者は64ビット仮想メモリ空間で膨大なデータセットを操作できるアプリケーション(および既存の64ビットコードを移植できるアプリケーション)を構築でき、Mac OS Xのすべてのドライバやその他のカーネルレベルの拡張機能をすぐにアップグレードする必要はありません。この移行はSnow Leopardで実現されます。
64ビットアプリへの移行はどれほど大きな意味を持つのでしょうか?Appleの開発者向けドキュメントには、「32ビットコンピューティングと64ビットコンピューティングの違いを理解するために、ゴールデンゲートブリッジの道路部分を32ビットのアドレス空間で表現できるデータセットを扱っていると想像してみてください。64ビットのアドレス空間があれば、地球の表面全体を同じ解像度でモデル化できます。」と記載されています。
Snow Leopardの64ビットカーネル
AppleはSnow Leopardで64ビットサポートをカーネルにまで拡張します。これにより、Macシステムは現在32ビットPAE経由で利用可能な32GB以上のRAMを搭載できるようになります。カーネルが完全な64ビットメモリアドレッシングをサポートすることで、Appleはユーザーが購入できる範囲でRAMを増設できます。もちろん、AppleからRAMを購入する場合、Mac Proを32GBのRAMにアップグレードするには現在9,100ドルかかります。そのため、ホームユーザーがそれ以上のRAMが必要だと判断するまでには、まだ時間がかかるかもしれません。
Leopardの32ビットカーネルは32ビットと64ビットの両方のアプリケーションを実行できますが、64ビットアプリケーションは32ビットのプラグインや共有ライブラリをロードできず、その逆も同様です。64ビットカーネルも同様に、32ビットと64ビットのコードを混在させることができないため、64ビットカーネル拡張機能とドライバを必要とします。したがって、64ビットカーネルへの移行には、Snow Leopardのすべてのカーネルドライバの全面的なアップグレードが必要になります。
Snow Leopardでは、Mac OS Xアプリ用のプラグインを開発する開発者は、コードを64ビットに再コンパイルする必要があります。これには、システム環境設定パネルからWebプラグインまで、あらゆるものが含まれます。この大規模なアップグレードの理由は、AppleがFinderからiTunes、Safariに至るまで、システム全体を32ビットと64ビットの両方でコンパイルして提供するためです。32ビットMacではSnow Leopardは通常通り動作しますが、x64 Macでは、システム上のすべてのアプリがx64の利点、特に32ビットPCにはないx64の追加レジスタの恩恵を受けるため、すべてが大幅に高速化されます。
この利点は、64ビットへの移行とそれに伴うデータ項目の増加によって生じる追加のオーバーヘッドを上回ります。一方、Snow Leopardとそのアプリケーションを64ビットPowerPC G5向けに再コンパイルしても、実質的なメリットはありません。G5は現在、32ビットx86のレジスタ問題に制約されていないためです。64ビットG5のレジスタ数はG4と同じで、これはG4が既に十分なレジスタ数を持っていたためです。G5では、64ビットアドレッシングによるオーバーヘッドの増加により、64ビットアプリケーションの実行速度が実際にはわずかに低下します。そのため、Snow LeopardはIntelのみで動作すると思われます。
Snow Leopard に関する詳細情報は、AppleInsider のMac OS X 10.6 ページに掲載されています。