Intel CPU搭載のMacintoshに関する多少の考察

ニュース
トップ

【レポート】

Intel CPU搭載のMacintoshに関する多少の考察

大原雄介  [2005/06/11]

Yamashita氏のレポート、あるいは海上氏の解説などにもある通り、Appleは2007年末までにIntel CPUへの移行を完全に果たす事を明らかにした。これに関する政治的な背景などを報じるのは筆者の任ではないし、そもそもそこまで細かい話は「知らない」から書きようがないわけだが、色々面白い話があちこちから伝わってきたので、これをベースに少し考察をしてみたいと思う。

IntelプラットフォームでのMac OSの性能

WWDC会場にはさまざまな場所にたくさんのPentium 4搭載Macintoshが並べられており(外観はG5 Macそっくりだそうで)写真は不可ながら自由に操作可能になっていたらしい。実際会場1Fの特設ラボでは、自分の持っているソースコードやMac BinaryがPentium 4 Macで動作するかどうかの検証を自由に行えたそうで、試した人の話では案外に互換性は高いとの事。もっとも、リコンパイルしても素直に動かないケースは当然あるようで、(特にドライバなど)簡単に移行できないソフトもあるようだ。ちなみに性能はというと、G5と殆ど遜色がないなんて感想も伝わってくるほど高速だったらしい。実は、「何でG5とPentium 4が同等の速度で動けるのか?」という話が別にある。例えばちょっと古い話だが、1.8GHz動作のPowerPC 970のSPECint2000 / SPECfp2000がそれぞれ937 / 1051とされている。今ではPowerPC 970の動作速度は2.7GHzに達しているので、とりあえず仮に1.5倍して1406 / 1577と仮定しておこう。一方Pentium 4の性能は、3.6GHzの場合それぞれ1718 / 1898という数字がSPECで公開されているから、この数字だけ見ていれば明らかにPentium 4が上である。にもかかわらず、アプリケーション性能を比較するとしばしばG5の方が高速だった、という事はMacユーザーはご存知の話。これは、x86のコード密度(Code Density)が低いことに起因する。こちらの特集、あるいはかつてコラムでもちょっと触れたが、x86の欠点は少ない汎用レジスタと、これに起因する3オペランド命令の無さであって、この結果煩雑にスタックを利用して汎用レジスタを使いまわす処理が入り、これが命令の多さ、つまりコード密度の低さに繋がっているわけだ。PowerPCを含む一般的なRISCプロセッサの命令と比較し、x86は同じ処理を行うために必要な命令数が数十パーセント以上多い事は良く知られている話で、これが性能低下に繋がる最大の理由である。

このあたりはAMD64なりEM64TのNative Modeを使うことで大幅に緩和される、というのは特集の中で実際にアセンブルソースを比較して確認した通りで、汎用レジスタが大幅に増えたのがその理由であるが、逆にG5とPentium 4が同等ということは、Pentium 4はEM64Tで動作している可能性が非常に高いということだ。

実際、PowerMac G5は64bitプロセッサである上、TigerことMac OS Xは64bitに対応している。従って、Pentium 4もEM64Tモードで動作していると考えるのが自然だし、事実特設ラボで試したところ、起動ログの中にEM64T用のコードを呼んでいる個所が発見されたという報告もあるほどで、64bitモードで動作していることは間違いないだろう。もっとも、32bitで動作しないのか? というと、これはまた別の問題があるわけだが。

Rosettaの中身

さてここで気になるのはRosettaである。要するにPentium 4上でPowerPCのアプリケーションを実行するためのTranslatorだが、Yamashita氏のレポートによれば「エミュレーション」(続報となるこちらの記事では「ダイナミック・バイナリ・トランスレーション」と紹介)、海上氏の記事では「ジャスト・イン・タイムのバイナリ変換機能」となっており、同じ事を指しているような、微妙に違うような、ちょっと判断が難しいものである。この辺りの詳細は海上氏の記事を読んでいただくのが早いが、PowerPCプロセッサのエミュレータなのか、それとも(Transmetaの)CMSの様な動きをするのか、はっきり断言が出来ない。

実はこのRosetta、Transitive Corporationの提供するQuickTransの機能をベースにしている、という話が出ている。これはThe Mercury Newsが報じた(読者登録が必要)もので、同社のCEOがこれを認めている。これが事実なら、どちらかといえばCPUのエミュレーションというよりは、CMSに近い動作になるわけだ。Front-End Decoderと呼ばれる部分がPowerPC用のコードを解釈し、これをOptimizing Kernelという部分で最適化した後、Code Generatorでx86用(というかEM64T用)のコードを出力するという形でPentium 4に処理を行わせるという仕組みである。ちなみにMac OS X上では、これはエミュレーションドライバとしてシステムに認識されているらしい。

32bitか64bitか

ここでまた、先ほどの問題に戻るわけだ。つまり32bitか、64bitかという話である。海上氏の記事中にもある通り、Apple Developer Connectionに掲載されたUniversal Binary Programming Guidelinesには"The term x86 is a generic term used throughout this book to refer to the class of microprocessors manufactured by Intel. This book uses the term x86 as a synonym for IA-32 (Intel Architecture 32-bit)."という記載があるほどで、これを読めばx86のプロセッサでも動作するように読めるが、その一方で全てのIA-32プロセッサで動作するとも書かれてはいない。技術的な面を見ると、

  1. Transitive CorporationのQuickTransには、"QuickTransit for x86"と"QuickTransit for Opteron"の2つがあり、どちらでも使える。
  2. RosettaはMac OS 10用アプリケーションが対象で、しかもPowerPC G3向けにビルドされたものがカバーされる。つまり、対象となるコードは64bitではなく32bitである。

という話がある。つまりどっちでもありうるわけだ。

また歴史的な経緯を考えると、Appleはここ数年に渡ってIntel上での開発を行ってきたとしており、少なくとも開発当初にはAMD64 / EM64Tの環境は無かったと考えても間違いではない。勿論AMDは早い時期からAMD64のエミュレータを提供してきたし、仮にAppleが強く望めばAMDからOpteronのPreSiliconの提供を受ける事は可能だっただろうと推察されるから、当初から64bit化することは不可能ではなかっただろうが、あまり現実性はない。少なくとも開発当初は32bitと考えるのが自然だろう。

では、最終的な製品はどうなるか? という話だが、これもちょっと混沌としている。性能あたりの消費電力がPowerPC 970の問題だったとすれば、Pentium 4 / Pentium Dを使ったシステムというのはもっと問題がある訳で、短期的にデスクトップ向けに提供される事はあっても、長期的に見ればPentium Mのアーキテクチャに切り替わる事は間違いない。ところがこのPentium MではEM64Tが当分提供されない事になっている。

現在のIntelのPentium Mのロードマップでは、来年Q1にYonah(90nm / Dual Core)がまずリリースされ、次いでQ2にはSossaman(65nm / Dual Core)がリリースされる予定だ。ただこのSossaman、最初に提供されるのはモバイル向けではなく、組み込み向けとなるようで、モバイルにはQ3以降になりそうな感じだ。で、このYonahとSossaman、どちらもEM64Tをサポートしない。しない、というよりも出来ないという方が正確だろう。というのは、Pentium Mのアーキテクチャが64bitを考慮していないからだ。

AMDはK8アーキテクチャで、全てのALUやFPUを64bit幅に素直に拡張する、という(ある意味力技的な)アプローチを取ったが、IntelはNetBurst ArchitectureでALUを16bit幅→32bit幅にした上で、64bit演算は2回の32bit演算として倍速ALUを廻す事で対応している。これはスマートであるが、同じ事をPentium Mで行ったら間違いなく消費電力が激増する。従って、EM64T対応となるMelomのアプローチとしては、K8同様に愚直にALUを64bitに増やすしか無いと思うのだが、これをやるとなるとレイアウト変更位では済まない、殆ど設計のやり直しに近い大作業になる。既にIntelはこの作業に掛かっているのは間違いないが、仮にDothanのリリース(2004年5月)直後から開始していたとしても2年位は軽く掛かる内容だから、設計が終るのは早くて2006年Q2、現実問題として製品が出荷されるのは2007年以降になるだろう。つまり、AppleがIntel製品を搭載したMacintoshを出荷開始する時点では、EM64T対応のPentium Mは間に合わない事になる。従って、Rosettaは32bit版と64bit版の両方が無いとおかしいことになるだろう。

察するに、XserveはEM64Tベースのものとなり、プロセッサも(当初は)XeonあるいはPentium Dベースになるのだろうし、ハイエンドのMac DesktopはPentium Dあたりで64bitなのだろうが、iMacやPowerBook / iBookはYonahベースの32bitモードで動く、という感じになりそうだ。この辺りが完全にMelomで置き換わり、Top to Bottomで64bit化されるのが、2007年末なのではないか、と言うのが筆者の分析である。

関連記事

関連サイト

新着記事

特別企画

一覧

    人気記事

    一覧

    イチオシ記事

    新着記事

    ASUS、新色スモーキーブラウン採用の13.3型ノート「ASUS ZENBOOK UX303LN」
    [16:57 10/22] パソコン
    オジャガデザインから「キン肉マン コレクション」5アイテムが登場!
    [16:55 10/22] ライフ
    アドビ、Photoshop/Illustratorの利用バージョンを聞くアンケート結果発表
    [16:54 10/22] クリエイティブ
    燃えるように光る、たき火をモチーフにした間接照明「TAKIBI(タキビ)」登場
    [16:53 10/22] 住まい・インテリア
    若者の「使い捨て」STOP! 厚労省が「学生のための労働条件セミナー」開催
    [16:43 10/22] キャリア

    特別企画

    一覧