第3回

Linux:ブームを超えて
「Linux64に見る、Linuxの可能性」

宮原徹
株式会社アクアリウムコンピューター
2000/10/17

 Linuxカーネル2.4のリリースが目の前に迫ってきている。カーネル2.4では、今後の大きな飛躍を視野に入れたかなり多くの修正が加えられている。それはドライバの作りやすさを考慮に入れたアーキテクチャの変更だったり、プロセス数の上限の変更などだ。これまでLinuxの弱点といわれていた、こうした点への修正は、本格化しつつあるLinuxビジネスへの大いなる追い風となるであろう。そこで、さらにその先にあるハイエンドコンピューティングのための布石となる、64ビットCPUへの対応について少し考えてみたい。

 Linuxの64ビット対応の状況

 Linuxが動作するCPUというと、まず思い浮かぶのはリーナス・トーバルズ(Linus Torvalds)氏が最初に開発を始めたインテルのi386 CPUだろう。これはもうすぐPentium4になろうとする現在においても、Linuxが最もたくさん動いているCPUといえばIA-32(インテルの32ビットアーキテクチャ)という意味では変わりはない。

 しかしIA-32以外にも、多くのCPUでLinuxは稼働している。例えば「The Linux Kernel Archives」(http://www.kernel.org/)を調べてみると、少なくとも以下のCPUに対応していることが分かる。

  • Compaq Alpha AXP
  • Sun SPARC and UltraSPARC
  • Motorola 68000
  • PowerPC
  • ARM
  • Hitachi SuperH
  • IBM S/390
  • MIPS
  • HP PA-RISC
  • Intel IA-64
  • DEC VAX
  • AMD x86-64 Architecture(移植中)

 これらを見ると、大体3つのグループに分けることができると思う。1つは最もポピュラーな、デスクトップPC、ワークステーション、サーバ系だ。もう1つは、S/390のような、大規模なシステム上で動くLinux。そして最後の1つは、ハンドヘルドPCやPDAのような、コンパクトなシステム上で動くLinux。

 最近はCPUの進歩が目覚ましく、コンパクトなCPUでも16ビットから32ビットに、さらには64ビットにもなろうとしている。そんな中でどのCPUが何ビットCPUか、あるいはどの64ビットCPUにLinuxが対応しているか、ということを考えるのは徐々に意味のないことになりつつあるのかもしれない。

 しかし、そういってしまうとこの文章も終わりになってしまうので、一般論かつ感覚論で考えてみると、64ビットのCPUで動くLinuxといったら、ポピュラーなのはCompaq Alpha AXP、あるいはSun UltraSPARCあたりであろうか。日本では特に科学技術計算用やハイパフォーマンスなWebサーバを構築するうえでAlphaの人気が高いような気がする。その表れが、日本で入手できるディストリビューションのうち、どちらにどれぐらいの数が対応しているかで見ることができる。

Alpha対応のディストリビューション
Kondara MNU/Linux
Red Hat Linux
Debian GNU/Linux
Omoikane GNU/Linux(デベロッパーリリースのみ)
SPARC対応のディストリビューション
Red Hat Linux
Debian GNU/Linux

 このように、Alphaが4つ、SPARCが2つという結果だ。もちろん、これ以外のディストリビューションはほとんどがPC。一部Macがあるという感じである。

 64ビットLinuxを取り巻く現状

 このようにLinuxで64ビットがいまひとつ盛り上がらない状況である理由の1つに、ハードウェアの入手の困難さがあるだろう。当然、AlphaもSPARCも、中古マシンならいざしらず、新品の最新型のハードウェアはかなり高価である。さらに、それぞれのハードには基本的にそれぞれ専用のOSが付いてくるものである。すでに入っているものにわざわざ新しいOSとしてLinuxを搭載する理由は、あまり見当たらない。当然、64ビットCPUマシンを入れなくてはいけないような業務での利用の際にはサポートも重要なだけに、サポートされないLinuxの導入はなかなか難しい。

 こう見てくると、64ビット環境ではLinuxは全然駄目かというと、そうではない。というよりも最近、がぜん注目され始めた。理由は明白。最もたくさんのLinuxのインストールベースを持っているインテルの、64ビットアーキテクチャ「IA-64」を採用した最初のCPU「Itanium(アイテニアム)」の出荷が、目の前に近づいてきたからである。

 さらにインテルのライバルに成長しつつあるAMDの64ビットアーキテクチャ「x86-64」も、レッドハットなどの協力を得てLinuxへの対応を進めようとしてきている(実際の製品の出荷予定は2001年末なので、インテルに比べて出足は遅れるが)。

 このような動きの裏にあるのは、やはりWindowsである。Linux陣営が静かに着々と成果をあげているのも、1つはWindows 2000の64ビット対応がいつになるのか分からない(遅れている?)という状況が追い風になっているからであろう。LinuxはオープンソースでIA-64で動くもの(完成品とはいいがたくとも)を入手できるのに対して、64ビット版Windows 2000は、限られた人間しかアクセスできない。こうした状況も、新しもの好きな技術者のマインドに大いに影響を与えているような気がする。

 LinuxとIA-64を考える

 インテルのIA-64に関する情報公開は、これまでのPentiumシリーズに比べると秘密主義といってもよいくらいだった。そんな中でIA-64に関してかなりまとまった情報を得られる書籍が出版された。『IA-64プロセッサ基本講座』(インテル株式会社 池井 満著 オーム社発行)である。この書籍では、インテルの社員である池井氏自身がIA-64についての技術的情報を惜しげもなく公開してくれている。書籍の中盤ではかなり突っ込みすぎてしまい、ついていくのが大変だが(実際、私はついていけなかった(笑))、書籍の後ろの方にはソフトウェア的なことが書いてあり、非常に興味深い。それではその書籍の中から独断と偏見でいくつかポイントを挙げてみよう。

■レジスタの数

 IA-64ではこれでもか!というぐらいの数のレジスタが存在する。数えてみると

  • 汎用レジスタ 64ビット 128個
  • 浮動小数点レジスタ 82ビット 128個
  • プレディケート・レジスタ(※) 1ビット 64個
  • アプリケーション・レジスタ 64ビット 128個
  • 分岐レジスタ 64ビット 8個
    (※比較命令の結果を格納し、条件分岐などの処理を行うために用いられる。)

 ほかにも命令ポインタ、カウント・フレーム・マーカ、ユーザー・マスクといったレジスタがあり、全部で459個(!)もある。8086のアセンブラで知識が止まっている私にとっては隔世の感だ。これだけのレジスタをハンドリングするときに重要なのは、やはりコンパイラの最適化能力であろう。Linux64ではgccが担当するわけだが、この部分がどの程度のパフォーマンスを示すのかが気になるところである(今のところ、IA-64によるベンチマークについての情報は見当たらない)

■メモリサイズについて

 64ビットCPUのメリットの1つとして、取り扱えるメモリサイズが多くなるという点がある。Linux IA-64で扱えるメモリは仮想記憶で最大5Tバイト(編集部注)。これまでの32ビットによるメモリ制約から考えると、非常に大きなサイズのメモリを扱えることになり、テラバイトクラスのメモリ空間が要求されるアプリケーションの実行も可能となる。ちなみに、64ビットWindows 2000の取り扱える仮想記憶は最大16Tバイト。負けている……。

 Linux64の方向性

 それ自身は専用のOSを持たない64ビットマシンが出てくることによって、にわかに64ビットの世界がオープンになってくることはまず間違いない。各メーカーもすでにItanium搭載マシンを準備し、マーケットづくりを始めている。では、一体64ビットとLinuxはどの方向へ向かうのだろうか。一般にいわれるのは、やはり科学技術計算やWebサーバなど。場合によってはデータベースやCGのレンダリングやモデリングにも使われるかもしれない。ただ、ここに挙げたどれもが「マーケット」というには市場規模が小さくピンとこない部分があると思う。実際、64ビットOSにとって大規模なマーケットが現れるのは、随分と先のことになりそうだ。

 しかし、まったく同じとはいえないまでも、CPUが16ビットから32ビットに移行するときにも、やはり32ビットのメリットがいまひとつはっきりせず、両者が共存した時期があった。しかし、アプリケーションの爆発的なメモリ使用量の増加につられて、自然と32ビットへと移行していった。32ビットのメモリ上限は4Gバイト。一見たくさんに見えるが、あれば使ってしまうものを考え出すのが人間である。(現在のメモリ空間では)すでに足りなくなってきている分野もあるだけに、世界が64ビットを標準に考える時期が来るのもそう遠くはないに違いない。そんな近い未来をぜひLinuxで味わってほしい。

 残念ながらまだ今のところ実際のIA-64も出てきておらず、リアルな64ビット環境を整えるには商用UNIX用のマシンを入手するしかない。しかし、いくつかの64ビット環境シミュレータが出ており、それらを使えば32ビット環境で64ビットを体験することができる。一足先に、64ビットのプログラム環境を整えておくのも悪くないのではないか。そしてそのときに、手に入るのは現在のところLinuxだけである。

編集部注
記事中の「Linux IA-64で扱えるメモリは仮想記憶で最大5Tバイト」という部分について、NECの野村様より以下のご指摘を頂戴しました。

仮想メモリの大きさの計算方法

  • ページ=16KB(2の14乗バイト)
  • ページテーブルのサイズは1ページ、エントリ=8バイト(2の3乗バイト)
  • 3段階ページングサイズは2の11乗×2の11乗×2の11乗×2の14乗=128TB(2の47乗バイト)
  • ユーザープロセスが利用できる仮想メモリ空間=5/8
  • 128TB×5/8=80TB
80TBと5TBについて
  • IA-64 Linuxではカーネル構築時にページサイズを選択できる
  • ページサイズを8KBにした場合は2の13乗バイトとして計算するため5TBとなる
  • 現時点でのデフォルトページサイズは16KBであり、この場合80TBとなる

以上により、仮想メモリの大きさでは必ずしもWindows 2000に負けているわけではないということになります。

この件に関して筆者である宮原氏に確認したところ、野村様のご指摘が正しいとのことでした。宮原氏からの要望もあり、野村様より頂戴したご指摘の内容も掲載した上で、ここに訂正させていただきます。

ご指摘ありがとうございました。

 

筆者紹介
宮原徹

株式会社アクアリウムコンピューター代表取締役社長/Project BLUE/日本Samba ユーザ会 広報。データベースの活用を中心としたLinuxによるビジネスソリューション構築のため、公私にわたり日々活動している。Linux Squareフォーラムのガイドとして、記事の執筆などを行う

連載 WindowsユーザーのためのLinux超入門


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間