アットウィキロゴ

64bit対応

「64bit対応」の編集履歴(バックアップ)一覧に戻る

64bit対応 - (2009/10/16 (金) 20:20:50) のソース

*■ OSXの64bit対応について
 OSXでは4GB以上の[[メモリ]]を使用でき、内部も一部64bit化がされている。しかしながら、完全に64bit化するのはOSX 10.6 Snow Leopardからで、10.5まではカーネル及びデバイスドライバも32bitのままである。

#image(http://www39.atwiki.jp/macmini/pub/64bit.gif,width=600,height=400,title=各OSの64bit対応度,http://www.appleinsider.com/articles/08/10/28/road_to_mac_os_x_snow_leopard_64_bit_to_the_kernel.html,blank)
#right(){[[参考資料:Road to Mac OS X 10.6 Snow Leopard: 64-Bits>>http://www.appleinsider.com/articles/08/08/26/road_to_mac_os_x_10_6_snow_leopard_64_bits.html]]}

  Windows XPやVistaの例から32bit OSでは扱えるメモリは4GB(使用するチップセットによっては約3.3GB)までという認識が広まっているが、[[CPU]]がPAE(Physical Address Extension)、及びチップセット、OSが4GB以上のアクセスに対応していれば、32bit OSでも最大64GBまでのメモリを扱うことができる。

 Windowsの例を挙げると32bit版Serverエディションの、Windows 2000 Advance Server以降、Windows 2003 Enterprise Server以降、Windows 2008 Enterprise Server以降が該当する。

 OSXも同様の事を行っており、Mac mini Early 2006, Late 2006 に搭載された32bit CPUのCore Solo、Core Duoは、PAE機能によりメモリは36bitアクセス(64GB)が可能で、4GB以上のメモリを扱う事ができる。しかしながら、これらCPUと組み合わせられたチップセット945GMEの最大メモリ量は4GBまでの制限があり、更にMemory Recalim(Memory Remap)機能にも対応していない為、最大メモリ量は実質3.3GB止まりのままであった。

 その後、Core 2 Duo以降の64bit CPUが採用された機種では、64bit CPU用に新たに用意された32bit互換モードでカーネル/デバイスドライバを動作させる一方で、I/OKitを64bit化させることにより、アプリケーションが扱えるメモリは64bit CPUで実装された48bit(256TB)アクセスを行い、4GB以上のメモリを扱えるようにした。

 ただし、Core 2 Duoを採用したMid 2007モデルは、CPUは64bitに対応しているが、チップセットが更新されなかった為、メモリの上限は3.3GBのままである。

 従って、OSX 10.4から10.5では、メモリを4GB以上搭載することもでき、周辺機器も64bit用ドライバを用意せずともそのまま使用できる。

 しかしながら、Early 2009で採用したチップセットGeForce 9400Mは、最大メモリ量が8GB(DDR2使用時は16GB)になり、Memory Recalim機能にも対応している為、メモリ4GB搭載時に4GB全て使用できるようになった。

 ただし、これには使用するOSに条件があり、&color(red){&bold(){OSの最大サポートメモリ量が物理メモリ(4GB)+メモリホール量(約700MB)の総計に対応}}している場合、つまり、0S自体が4GB越えに対応している必要があり、4GBまでしか扱えないWindows XP/Vista/7の32bitでは、4GB搭載しても3.3GBまでしか扱えない。

 したがって、Mac mini (Early 2009)で4GB搭載時に全て使用できる (Appleがサポートしているのは太字のみ)のは以下である。
|BGCOLOR(skyblue):4GB以上扱えるOS|BGCOLOR(skyblue):Apple|BGCOLOR(skyblue):Microsoft|BGCOLOR(skyblue):その他|
|32bit|&bold(){Tiger 10.4, &br() Leopard 10.5 &br() Snow Leopard 10.6}| Windows 2000 Advance Server以降, Windows 2003 Enterprise Server以降,&br() Windows 2008 Enterprise Server以降| Linux (PAEカーネル/例:Ubuntu 9.10 &br() linux-generic-paeパッケージ追加) |
|64bit|&bold(){Snow Leopard 10.6}|Windows XP x64, &bold(){Windows Vista 64bit}, Windows 7 64bit,&br()  Windows 2003 Server x64以降,  Windows 2008 Server x64以降, Windows 2008 Server R2| Linux 64 |

#image(http://www39.atwiki.jp/macmini/pub/MemoryRemap.jpg,width=600,height=500,title=Memory Remap 機能,http://www39.atwiki.jp/macmini/pub/MemoryRemap.jpg,blank,left)

**■結論
 OSX Tiger、Leopardの正体は32bitカーネルを採用し、一部のライブラリ、コマンドが64bitに対応しているだけで、4GB以上のメモリを扱うことができる32bit OSである。Snow Leopardではカーネルの他、ライブラリ、アプリケーションフレームワークのCocoaも64bit化され、完全な64bit化が図られる。

 なお、従来の32bitのみのCPUもサポートするため、i386とPower PCのコードを混在させたユニバーサルバイナリと同様の仕組みで、カーネルもデバイスドライバも32bit (i386) / 64bit (x86_x64)両方のバイナリコードを含んだユニバーサルバイナリで対応する。

 開発版のSnow Leopardの情報を見ると、CPUが64bitに対応していれば、起動時にデフォルトで64bitカーネルをロード、そうでなければ32bitカーネルをロードしている。デバイスドライバも同様である。

・Snow Leopardのカーネル
>$ file /mach_kernel 
>/mach_kernel: Mach-O universal binary with 3 architectures
>/mach_kernel (for architecture x86_64):	Mach-O 64-bit executable x86_64
>/mach_kernel (for architecture i386):	Mach-O executable i386
>/mach_kernel (for architecture ppc):	Mach-O executable ppc

・Leopardのカーネル
>$ file /mach_kernel
>/mach_kernel: Mach-O universal binary with 2 architectures
>/mach_kernel (for architecture i386):	Mach-O executable i386
>/mach_kernel (for architecture ppc):	Mach-O executable ppc

***■追記. (2009/09/07)
 リリースされたSnow LeopardはXServeを除きデフォルトでは64bitカーネルはロードされない。64bitで起動させる為には、キーボードの「6」、「4」を同時に押して電源を入れるか、カーネルへの起動オプションとして、arch=x86_64を指定する必要がある。

 しかしながら、カーネルブートローダ(boot.efi)内では機種を判別し、Mac mini、Mac Book、Mac Book Airなどの一部の機種では64bitカーネルをロードしないよう意図的に制限がかかっており、H/W(CPU、EFI)が64bit対応していても64bitカーネルは使用できない。

 64bitカーネルのロード制限はブートローダによるソフトウエア制限なので、Appleの保証外になるが[[こちらの方法>>http://www39.atwiki.jp/macmini/pages/30.html]]で解除可能である。
  
----
[[戻る>トップページ]]