PR
(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

 低価格化の急速な進行により,64ビットへの拡張が施されたx86プロセッサが個人ユーザーにとっても身近な存在になりつつある。対応Linuxディストリビューションも増え,今すぐに利用可能だ。64ビット環境への移行で何が望めるのかを示すとともに,移行に際して注意すべき点を解説する。

写真1●米AMD社のAthlon64プロセッサ
入手しやすい64ビット拡張x86互換プロセッサである。最も低価格なものは1万6000円前後で入手できる。
表1●x86-64アーキテクチャ向けの主なLinuxディストリビューション
バージョンは2004年9月22日現在の最新版を挙げた。
表2●x86-64プロセッサの動作モード
64ビット拡張機能は,ロング・モードの64ビット・モードで利用できる。
図1●マルチライブラリで混在動作に対応
64ビット/32ビット・ライブラリの双方を備え,実行ファイル形式に合わせてリンク先を切り替える。これにより混在動作を実現している。
図2●fileコマンドによる実行ファイル形式の調査例
図3●32ビット向け開発環境が不足するため生じるエラーの例
32ビット版の「glibc-devel」パッケージが不足すると,このようなエラーが生じる。対策はパッケージのインストールである。
表3●GCCで利用できるx86-64プロセッサ向けの主なオプション
オプションは,GCCのバージョン3.4.2のものを挙げている。

 米Advanced Micro Devices社(AMD)が64ビット拡張を施したx86(互換)プロセッサ「Opteron」の出荷を開始してから1年半あまりが経過し,ここのところ急速に低価格化が進んでいる。例えば,最も安価な「Athlon64 2800+」(写真1[拡大表示])であれば実勢価格が1万6000円前後と,もはや高嶺の花ではなくなった。メモリー・モジュールやハード・ディスク,ビデオ・カードなどを32ビットのPCAT互換機から流用すれば,マザーボードを新調したとしても3万円あれば64ビット環境を入手できる。

 米Intel社もAMD社の拡張仕様(AMD64アーキテクチャ)とほぼ共通の「EM64T」( Extended Memory 64Technology)を採用したXeonプロセッサの出荷を2004年6月に開始,続く8月からはEM64T対応のPentium4プロセッサも一部出荷を開始している。

 Linuxディストリビューションも既にこれら64ビット・プロセッサに対応している。LinuxではAMD64とEM64Tを「x86-64」と総称し,表1[拡大表示]のようなx86-64向けディストリビューションが利用できる。なお,エミュレータを利用すれば,x86-64環境を32ビット環境で体験できそうである。

互換性を維持して拡張

 x86-64アーキテクチャの最大の特徴は,既存のx86アーキテクチャと互換性があることだ。

 x86-64アーキテクチャのプロセッサは,表2[拡大表示]に示す動作モードを持つ。プロセッサの能力を最大限引き出すには,レジスタや仮想メモリー・アドレスが64ビットに拡張される「ロング・モード」で動作させる必要があるが,そのロング・モードにおいても64ビット・アプリケーションだけを稼働できる「64ビット・モード」と,32ビット/16ビット・アプリケーションを稼働できる「互換モード」の2つを持つ。これらのモードは,アプリケーション単位*1で切り替えられるため,64ビット・アプリケーションと32ビット・アプリケーションを混在して利用できる。

 ただし,実際に64ビット/32ビットの混在環境を実現するには,OS側の環境整備が必要である。例えば,実行時に読み込まれる共有ライブラリを64ビット,32ビットのそれぞれのアプリケーション向けに用意して,アプリケーションに合わせて適切にリンクする必要などがある。これを正しく実施しておかないと,アプリケーションが動かないなどの不具合が生じる。

 x86-64対応Linuxディストリビューションでは,図1[拡大表示]のような「マルチライブラリ」構成を採用することで,混在実行を可能にしている。ライブラリをリンクするリンカーが実行ファイル形式を参照し,従来通りの「ELF32」であれば32ビット・ライブラリをリンクする。一方,64ビット実行形式を示す「ELF64」であれば64ビット・ライブラリをリンクする。なお,実行ファイル形式の種類は,fileコマンドやreadelfコマンドで簡単に判別できる。fileコマンドで実行ファイルを調べている様子を図2[拡大表示]に挙げた。

 マルチライブラリ構成である点を押さえておけば,不具合の原因を追求しやすくなる。例えば,GCC(GNU Compiler Collection)で32ビット・アプリケーションをビルドする際,図3[拡大表示]のようなエラーがでる場合がある。これは,32ビット・アプリケーション用の開発環境の一部がインストールされていないために発生する。具体的には,32ビット版のCライブラリ(glibc)の開発環境の不足が原因である。例えばFedora Coreなどでは,32ビット版のglibc-develパッケージをインストールすれば解決する。なお,GCCでアプリケーションを32ビット・アプリケーションとしてビルドする場合は「-m32」,64ビット・アプリケーションとしてビルドする場合は「-m64」というオプションを付ける。そのほか,表3[拡大表示]のような最適化オプションも利用できる。