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

レジスタ増で性能向上

表4●現行プロセッサが実際に利用できるメモリー量の制限
物理,論理メモリー・アドレスのどちらも64ビット長ではない。将来的には拡張される可能性がある。
表5●64ビット環境におけるCのデータ型の違い
IPL32と呼ばれるデータ・モデルから,LP64データ・モデルに変更されている。intが変化していない点に注意が必要である。
図4●レジスタ数が大幅に増加
汎用レジスタの増加は,性能向上に大きく寄与すると考えられる。
図5●64ビット環境ではOpenSSLの実行速度が大幅向上
OpenSSLライブラリで,1秒当たりにRSA/DSA暗号を何度署名できるかを計測した。64ビット環境では大幅に性能が向上しているのが分かる。
 もちろん64ビット化により,レジスタや仮想メモリー・アドレスが64ビットに拡張されたことも大きな特徴である。これにより,32ビットのメモリー・アドレスでは直接アクセスできない,4Gバイトを超えるメモリー領域にも直接アクセスできるようになる。ただし,現状では64ビットすべてをメモリー・アドレスとして利用できるわけではない。現行のプロセッサには表4[拡大表示]のような制限がある。

 仮想メモリー・アドレスの拡張に伴って,プログラミング環境のデータ型も変化している。例えばGCCは,32ビット環境では「ILP32」というデータ・モデルを採用している。これは,int(整数型),long(整数型),ポインタ*2のそれぞれが32ビット長のデータ・モデルである。これが,64 ビット環境では「LP64」,つまりlongとポインタが64ビット長に拡大されるという違いがある。ほかにも,表5[拡大表示]のような相違点がある。プログラミングの際には,この違いに十分注意しよう。とりわけ,int型の変数をポインタとしては利用できなくなったことに気を配る必要がある。

 64ビット化により,一般的には大規模なメモリー・アクセスや巨大なファイルの読み書き性能が向上すると言われている。しかし,実際には最も一般的なデータ型であるintが32ビットのままであることから,既存のプログラムを再ビルドしただけでは劇的な速度向上はさほど望めない。また,Part2で紹介する通りページ・テーブルの参照数が増えていることに伴う性能低下も生じるので,一意に性能が向上するとは言えない。

 性能向上という面では,汎用レジスタ数が大幅に増えたことによる影響の方が大きいだろう。x86-64アーキテクチャのプロセッサでは,図4[拡大表示]に示す通り,汎用レジスタやSSE/SSE2レジスタの数が大幅に増えている。従来のx86プロセッサでは,汎用レジスタの数が少ないことが性能の足を引っ張っていた。現在のプロセッサは,複数の命令を並列実行できるが,利用するレジスタが競合すると単純には並列実行できない。レジスタ・リネーミング*3などの仕組みで性能低下をある程度回避できるが,プログラマがアプリケーションを作成する際には,低速なスタックなどを多用せざるを得ない。

 x86-64アーキテクチャでは,汎用レジスタが64ビット長に拡張され,数も倍増した。これにより,主メモリーへのアクセスが少ない高速な最適化が可能になる。ただし,追加されたレジスタは,64ビット・アプリケーションからしか利用できない。逆に言えば,64ビット化により高速化が望めるということになる。

 実際に,OpenSSLライブラリを使って64ビット/32ビットの違いでの性能差を測定した結果が図5[拡大表示]である。テストは,2.2GHz動作のAthlon64 3200+を搭載するPC AT互換機にSUSE LINUX Enterprise 9.1をインストールして実施した。コンパイラは標準のGCC 3.3.3である。レジスタを使った演算処理を多用する暗号ライブラリだけあり,64ビット化により劇的に性能が向上していることが分かる。


EM64T対応Pentium4はワークステーション向けに出荷

表A-1●出荷中のEM64T対応Pentium4のラインアップ
写真A-1●日本IBMの「@server xSeries 206」
EM64T対応Pentium4を搭載したモデルがあるワークステーションである。
 EM64T対応のPentium4プロセッサは,2004年9月22日現在では一般向けには販売されていない。既に販売中の,開発コード名「Prescott」のコアを持つPentium4プロセッサには,同機能の回路が搭載されていると推測されるが,機能が無効にされているため利用できない。

 2004年8月3日に,ワークステーションやサーバーへの利用を前提としてPCメーカー向けに,表A-1[拡大表示]に示すEM64T対応Pentium4の販売が開始された。いずれもLGA775パッケージ対応版である。また,これらのEM64T対応Pentium4プロセッサには,一般向けのPentium4プロセッサに付けられる性能や特性の指標である「プロセッサ・ナンバー」は割り振られていない。

 このEM64T対応Pentium4搭載機としては,例えば日本HPの「HP Workstation xw4200」,日本IBMの「@server xSeries 206」(写真A-1[拡大表示]),デルの「Dell Precision 370」などのワークステーションがあるほか,いわゆるショップ・ブランドPCも数社が販売している。

 今後,一般向けのPentium4プロセッサでもEM64Tが有効にされると予想される。ただし,その時期について米Intel社からの発表はまだない。現状,Pentium4プロセッサでEM64Tを利用するには,ここに示したようなワークステーションやショップ・ブランドPCを購入する以外にない。