IT管理者のための速修講座:64ビット・コンピューティング
64ビット・コンピュータは導入段階を経て、各ビジネス分野向けに手頃な価格の製品が続々と発売される段階に入った。32ビットにとどまるべきか、64ビットに移行すべきか。判断に迷うところだ。そこで、この記事では、64ビット・ハードウェアと、その上で動作するソフトウェア、そしてパフォーマンス特性について、できるだけわかりやすく説明しよう。
64ビット・コンピューティングについては、どの程度ご存じだろうか。おそらく、AMDの64ビット・プロセッサAthlon 64とOpteronがヒットしたことや、これに対抗してIntelが開発したEM64Tについては、耳にしたことがあるだろう。また、64ビット・コンピュータは32ビット・コンピュータより高速であることもご存じだろう。しかし、速い理由や原理についてはご存じないと思われる。そこで、64ビット・コンピューティングの意味と仕組み、そして利点について、簡単に説明することから始めよう。
AMD64/EM64T:最新鋭アーキテクチャ
AMD64はAdvanced Micro Devices 64-bitという意味である。一方、Intelは自社の64ビット・アーキテクチャをExtended Memory 64 Technology(EM64T)と称している。どちらの命令セットも基本的に同じで、一方にあるものは他方にもある。先駆けたのはAMDであるから、以下、このアーキテクチャをAMD64と呼ぶことにしよう。
AMD64が登場する前のアーキテクチャはIA32(Intel Architecture 32-bit)である。これは、パーソナル・コンピュータ用32ビット・プロセッサ・アーキテクチャでは最も一般的なものである。80386というIntelのプロセッサを源流とし、その現在の形であるIA32は1990年代初めにPentiumプロセッサとして姿を現し、連綿と引き継がれて、現在のPentium 4とAthlon XPプロセッサに至っている。命令セットは登場以来多くの強化が施されてきたが、IA32(x86と呼ぶこともある)バイナリは初代Pentiumから現在のPentium 4やAthlon 64に至るまで、あらゆるプロセッサ上で動作する。
その他の現行64ビット・アーキテクチャ |
---|
AMD64以外にも、これまで数多くの64ビット・アーキテクチャが生まれている。しかし、広く使われているプラットフォームはSunのUltraSPARCとIBMのPOWER(PPC)とIntelのItanium 2(IA64)だけである。 UltraSPARCプロセッサは、Sun Microsystemsと富士通が、サーバーとワークステーションで採用している。エンジニアリング・医療・軍事におけるさまざまな用途向けのワークステーション(特に、画像処理や製図支援用)、あるいは、1つの筐体に最大128基ものCPUが搭載可能な超高性能サーバーで多く使われている。現行のUltraSPARCはすでに第4世代であり、32ビット・プロセッサの時代を含め大きな発展を続けている。UltraSPARCマシンで最も広く使われているオペレーティング・システムはSolarisだが、GNU/Linux、FreeBSD、NetBSD、OpenBSDもUltraSPARC搭載コンピュータの多くで動作する。 POWERアーキテクチャは、車載コンピュータやゲーム・システムからAppleとIBMが製作する制御用ワークステーションやサーバーに至るまで、広範な分野をカバーする。Appleは将来におけるIntel Pentium Mプロセッサへの移行を決定しているが、当分は、PowerPC CPUの搭載を継続する。Appleが主に販売するのは、1基または2基のCPUを搭載したPPCベースのデスクトップ・コンピュータとワークステーションである。一方、サーバーやワークステーションの上位機種はIBMが販売する。Appleのワークステーションは、グラフィック・アーティストやオーディオ技術者あるいは映画制作者に好まれている。これに対して、IBM IntelliStation POWERワークステーションは、コンピュータ支援による設計・解析のために製造部門で使われることが多い。PPCが32ビットから64ビットに移行したのはほんの数年前のことである。新しいPOWERプロセッサは、AMD64同様、32ビットと64ビットのPPCバイナリを同時に実行することができる。IBMが出荷するPOWERベースのコンピュータにはAIXとGNU/Linuxが搭載されているが、AppleはMac OS Xだけである。FreeBSD、OpenBSD、NetBSDも、ほとんどのPPCマシンで動作する。 IntelのItanium 2、つまりIA64アーキテクチャは、現行の他の64ビット・プロセッサとは異なり、VLIW(Very Long Instruction Word)デザインを採用している。このため、パフォーマンスはコンパイラに依存する。Itanium 2用のバイナリを生成する場合、コンパイラは最も効率的に実行する方法を予測し、プログラムの実行中にプロセッサの動作量が少なくなるようにする。つまり、実行中にハードウェアの要求に応じてリソースをスケジュールするのではなく、あらかじめ必要なりソースを用意しておくのである。IA64は、UltraSPARCプロセッサが使われるのと同種のワークステーションで使われている。また、最大128基のプロセッサが搭載可能な高性能サーバーでも使用できる。Itanium 2をベースにするコンピュータは、Silicon GraphicsとHewlett-Packardが販売している。IA64ベースのシステムで使われるオペレーティング・システムは、通常、GNU/Linuxだが、HP Itanium 2サーバー上ではHP-UXとWindows 2003 Serverも動く。 以上3種のアーキテクチャが共通して持つ特性は、スケーラビリティとパフォーマンスを別にすれば、高価格ということ。Appleのデスクトップ・マシンを除けば、上記のCPUを搭載するビジネス用コンピュータの価格は、すべて数千ドル以上、上は10万ドル(あるいはそれ以上――Webには128 CPUを搭載するサーバーの価格表がない)を優に超える。これに比べれば、AMD64ベースのシステムは遥かに安価である。数百ドルからあり、4 CPUシステムでも数千ドルである。AMD64は、現在(おそらく今後も)、CPUを8基までしか増設できないが、独立したAMD64 CPUを8基搭載するマルチCPUシステムを販売しているベンダーを筆者は寡聞にして知らない(執筆時点)。しかも、わずか8プロセッサに制限されているとはいえ、AMD64プロセッサは処理を行う中核部分を1つのCPUに2つ持てるのである。 |
通常、ソフトウェア・バイナリが複数のアーキテクチャ上で動くことはない。言い換えれば、あるアーキテクチャ用にコンパイルされたプログラムは、ソース・コードをコンパイルし直さない限り、他のアーキテクチャでは動かない。ところが、AMD64アーキテクチャでは、32ビットのIA32用バイナリも64ビットのAMD64用バイナリも動く。AMD64の優れた点である。しかもパフォーマンスが落ちることはなく、2つのオペレーティング・システムを用意しておく必要もない。AMD64は、32ビットIA32ソフトウェアと完全後方互換性があり、そのため既存のオペレーティング・システムやアプリケーションを入れ替える必要はない。AMD64は本当の意味で新しいアーキテクチャではないのだ。より正確に言えば、従来の制約を払拭し、より多くのCPUリソースを提供できるようにした、IA32命令セットの拡張あるいはスーパーセットなのである。
パフォーマンス上の優位点
AMD64命令セット・アーキテクチャには、その前身であるIA32よりもパフォーマンス上明らかに有利となる強化が幾つか施されている。しかし、そうした優位点を真に引き出すには、AMD64またはEM64Tハードウェアと、それを64ビット・モードでサポートするオペレーティング・システムが必要である。実運用に使用するための堅牢な完全64ビット環境を作るのであれば、オペレーティング・システムにはGNU/Linuxがよいだろう。中でも、SUSE Linux、Red Hat Enterprise Linux、Mandrivaのビジネス向け製品など、十分な実績がありビジネスとしてのサポートが付いているディストリビューションが好ましい。Microsoftの製品では、Windows XPやWindows Server 2003の新しいエディションが64ビット・ハードウェアをサポートしている。Sunでは、Solaris 10の新しいエディションがAMD64に対応している。また、FreeBSD、OpenBSD、NetBSDにも、十分な実績のあるAMD64版がある。
それでは、完全64ビットAMD64環境では、パフォーマンスはどの程度向上するのだろうか。また、平均的なビジネス・ユーザーにとってどれ程の意味があるのだろうか。64ビット・モードのAMD64でパフォーマンスがどの程度向上するかを理解するには、プロセッサの動作について、その基本を理解する必要がある。
プログラムはCPUを使って情報を処理するが、そのCPUは命令サイクルを単位として動作する。各命令サイクルは、次の2段階を経て進行する。
- 命令の取得――CPUは要求された命令を一時的な保持回路(命令レジスタ)に置き、そのマシン・コードを具体的な動作に変換する。
- 命令の実行――そのものずばり、命令を実行する段階。通常、メモリー上の1個所からデータを読み取り、処理し、同じ場所またはメモリー上の別の場所に書き戻す。
プロセッサが受け取る命令は命令語という形式になっており、その長さはアーキテクチャが定める標準的長さに一致する。たとえば、32ビット・システムの命令語は最大32ビットであり、64ビット・プロセッサはその2倍の長さの命令語を処理する。この長い命令を保持するために、AMD64アーキテクチャはIA32の2倍の長さの命令レジスタを持っている。したがって、64ビット・モードで動作するからといって命令サイクル自体が速くなるわけではない。速くなるのではなく、同じ時間内に、より長い命令を処理できるのである。
AMD64アーキテクチャでは、汎用レジスタも長くなっており、本数も多い。汎用レジスタというのは、データやメモリー・アドレスを一時的に保持するための領域である。汎用レジスタが多ければ、プロセッサは、それだけ多くのデータをレジスタに置いておくことができ、その分、高速に処理できる。データがCPUの近くにあれば、それだけ高速に処理することができるのである。たとえば、データがハードドライブ上にある場合を考えてみてほしい。データがレジスタにある場合に比べ、データを取り出す時間は遥かに長くかかるだろう。この事情はメモリー・キャッシュと似ている。キャッシュはCPUに近いところにあり(汎用レジスタはさらにCPUに近い)、最近取り出されたデータが保持されている。汎用レジスタの場合と同じ理由で、大きなキャッシュを持つプロセッサは高速である。キャッシュ・メモリーはRAMよりもCPUに近く、CPUがキャッシュのデータを使う際の待ち時間はRAMの場合よりも短いからである。したがって、ハードドライブやRAM上のデータを使わない場合は、キャッシュ・メモリーを使ってもパフォーマンス上の直接的な利点はない。
32ビットと64ビットの違いを理解しやすいように、プロセッサを荷物運びのロバに喩えてみよう。第1のロバは時速5キロで32キロの荷物を運び、第2のロバは同じ速度で64キロの荷物を運ぶとする。どちらのロバも、目的地に着くのに同じ時間がかかる。しかし、第2のロバで運べば、同じ時間でより多くの荷物を運ぶことができる。ここで注意してほしいのは、荷物が32キロを超えていなければ、第2のロバと第1のロバに優劣はないという点である。つまり、20キロの藁を運ぶなら、どちらのロバを使っても同じなのだ。しかし、10トンの煉瓦を運ぶ場合なら、第2のロバは第1のロバの半分の時間で作業を終えることができる。
コンピュータの世界に話を戻せば、データの大きな固まり――高精細度ビデオやオーディオ、データベース、複雑な科学技術計算(数値計算や3Dモデルのレンダリングなど)――を処理する必要がなければ、64ビット環境にしても、さしたる御利益はないということである。この場合、プロセッサは、その持てる能力を最大限に発揮できないのである。言い換えれば、電子メールの受信、Webの閲覧、文書の作成、音楽の演奏、映画の再生、データ入力などでは、64ビット環境に利点はないということだ。
モデルとベンダー
AMDが製造するAMD64プロセッサは数種ある。最上位プロセッサはOpteronで、デュアルコア化(チップ上のリソースを共有する独立したプロセッサのように動作する論理コアが2つある)でき、最大8基のCPUによるSMP(symmetrical multi-processing)構成が可能だ。その次は、Athlon 64 FXシリーズで、ハイパフォーマンス・ワークステーション用のプロセッサである。パフォーマンスを追及するゲーマー向けのデスクトップやワークステーションで使われることを前提に設計されている。その次は、Athlon 64 X2で、Athlon 64のデュアルコア版だ。その次が、末尾に記号の付かないAthlon 64で、これは第2世代に当たる。そして、一番下にSempron 64(紛らわしいが、「64」がない「Sempron」は32ビット)がくる。Athlon 64のキャッシュを落とした、低周波数の廉価版である。
次に、Intelを見てみよう。EM64Tサーバーとワークステーション用の最上位プロセッサはXeonである。Xeon MPは8 MBものレベル3キャッシュ・メモリーが搭載可能だが、かなり高価である。Xeon MPもXeonもプロセッサを最大3基増設でき、4ウェイSMPシステムを構成することができる。新しいモデルはすべてデュアルコアだ。その次は、Athlon 64 FXとよく似たPentium Extreme Edition。これは、Pentium 4にキャッシュ・メモリーを増設し、デュアルコア化し、クロック周波数を高くしたものだ。その次は、新たに登場したPentium Dである。これは標準Pentium Prescottコアのデュアルコア版だが、ハイパー・スレッディング・テクノロジはサポートされない。そして、EM64Tラインの最下位にはCeleron Dがくる。ただし、初期のモデルは64ビット・コンピューティングをサポートしていないので、購入する前に確認すること。
サーバーとワークステーションでは、DellとIBMがIntel EM64Tベースのものを販売しており、オプションとしてWindowsとGNU/Linuxの32ビット版または64ビット版のいずれかをプレインストールできる。
Sun Microsystemsは、Solaris、GNU/Linux、WindowsがインストールされたOpteronベースのハードウェアを販売している。
また、Hewlett-Packardは、OpteronベースとXeonベースのサーバーおよびワークステーションを販売している。オペレーティング・システムにはWindowsとGNU/Linuxを使用。
IntelもAMDも、現在、32ビット・プロセッサのモデルを減らしつつある。したがって、新しいマシンを購入する場合、64ビット・サポートのモデルになることは避けられないだろう。しかし、恐れることはない。この解説を読んだ今では、少なくとも、オペレーティング・システムやソフトウェアが64ビット・サポート・マシンの上でどのように動いているのかはわかっているのだから。
原文