栗原潔のテクノロジー時評Ver2:ITmediaオルタナティブ・ブログ (RSS) 栗原潔のテクノロジー時評Ver2

知財、ユビキタス、企業コンピューティング関連ニュースに言いたい放題

MacがIntelへ移行("Macintel"と言うらしいです、ちょっと苦しい^^;)することで、バイトオーダーの話が議論の対象になってます。

ちょっとでもプロセッサのアーキテクチャのことを知っている人であればバイト・オーダーの話はご存知でしょう。一応説明しておくと、整数のフォーマットで上位バイトにに小さい方のアドレスに上位の桁を置くビッグ・エンディアン型とその逆のリトル・エンディアン型の2種類があるということで、SPARCやPowerPC(G5)は前者、Intel(IA-32)は後者、MIPSやItaniumはビッグとリトルのどっちでも切り替えて使える両性具有型です。

ということで、Mac環境でのPowerPCからIntelへの移行はバイト・オーダーの変更を伴うものであるわけです。ソースから再コンパイルしてしまえば、よほど変なコーディングしてない限り問題はないわけですが、問題となるのはエミューレーションやトランスレーションによる実行の時です。

Appleは"Macintel"環境移行に伴い、"Rosetta"というトランスレーション・ソフトウェアを提供して、PowerPC用のオブジェクトをIntelプロセッサ上で稼動させることになってます。この種のトランスレーション・ソフトは、簡単に言うと、旧オブジェクト・コードをエミュレーション実行しながら、実行した分を新オブジェクトに変換する仕組みになってます。最初の1回は遅いけれど実行していくうちに段々速くなっていくというわけです。

コード部分はプログラム稼働中に変換するという離れ業ができるわけですが、データの方はそういうわけにはいかないですね。どのデータをアクセスするかはプログラムの実行条件によって都度変わりますし、プロセッサの立場から見ればどっからどこまでがデータの配列かというのはわかりませんので、実行しながらデータのバイト・オーダー変更というわけにはいきません。結局、新オブジェクトに逐一バイト・オーダーを変換する命令を挿入しなければならないということで、これは結構オーバーヘッド大きそうです。

ただでさえ、Pentium 4とPowerPCの性能差はそんなにないので、トランスレーションでのパフォーマンス劣化は結構あるでしょう。

IntelがItaniumと同様にバイト・オーダーを切り替えられる機能をPentiumに追加してくれれば話は楽ですし、そういう観測をしている人もいるようですが、個人的にはたぶんその可能性は薄いのではと思ってます(少なくとも、"Macintel"登場時に間に合わせようと思うのなら、Intelは今の段階から発表してないと大混乱でしょう。)

まあ、Apple的には、過去の資産は断ち切って、全部再コンパイルしてくださいよというのが本音なのでしょうね。

余談:リトル・エンディアンという言い方、大学で習った時は「リトル・インディアン」(スリー・リトル・インディアンとかの)の洒落かと思ってた(しばらくそう思い込んでた)のですが、全然違いました ^^;。「ガリバー旅行記」に由来する言い方だそうです(参照Wikipediaエントリー)。

栗原 潔

Special

- PR -
コメント
anonymous 2005/06/17 10:20

まあ、それほど速度差のないものをエミュレーションするわけですから「そこそこ動く」ものが精一杯でしょう。そういう努力をしているという点は評価できると思います。

※wikipedia.orgへのリンクは以下の方がよいようです。
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3

栗原 潔 2005/06/17 14:04

>>anonymousさん
リンクのURL文字化けしてましたね(何でだろー?)
直しました。どうもすみません。

anonymous 2005/06/17 20:33

冒頭の略称ですが、「Mactel」も使われているようですね。やはり微妙に苦しいので普及するかどうか、わかりませんが・・・、あ、いや、マシンではなく :-)

栗原 潔 2005/06/17 20:57

"Macintel"はゴロが悪いですが一応"int"は共通なのに対して、"Mactel"は一個も合ってないですね :-)

Tomy 2005/06/18 00:20

エンディアンの解説が曖昧ではありませんか?
解釈によっては逆の意味にも。

anonymous 2005/06/18 00:30

たしかに。そういえば、メモリマップで0を上に書くか下に書くかも違うことがありましたね。今回の問題の本質は「バイトオーダーに差異があること」ですが :-)

栗原 潔 2005/06/18 08:01

あ、ほんとだ。ダンプリストで上位の桁に上位にデータが来るのがビッグ~というつもりで安易に書いてしまいました(スンマセン)。ちょっと直しました。

栗原 潔 2005/06/18 08:06

うむむ、本文を直すと必ずリンク部分のURLが文字化けする(直しましたが)。なぜ、半角英字なのに化けるの?

fox 2005/06/18 11:41

Appleの「せいで」とわざわざ書くというのは
エンディアンは業界の腫れ物に触るようなタブー話なのでしょうか?
「〜せいで」というのはあまり良い意味では使われない言葉ですが

栗原 潔 2005/06/18 11:47

特に深い意味はなかったんですけど、強いて言うと、Appleがこの件をあまりオープンにしないで「移行は無問題」と言い続けてる姿勢に対して無意識のうちに皮肉入れてしまったのかもしれません。

本田雅一 2005/06/18 17:23

実際にMacを使ってみるとわかりますが、さほどエミュレーションのパフォーマンスは必要ではないんじゃないかなと。あと、実際にRosettaに触れた人の話からすると、さほどパフォーマンスは悪くないようです。

栗原 潔 2005/06/18 17:45

あー、本田さんどうも初めまして(記事はいつも読んでます)。自分はMacはPlus→Quadra700と使ってました(古っ)が、確かにGUIのサクサク感は、CPUのパフォーマンスでは上のWindows機より全然良かったですね。
まあ、ただベンダーの都合でCPUアーキテクチャ変えるからには、ユーザーにはパフォーマンスがものすごく良くなるという見返りがあってしかるべき(68040→PPCの時はそれがあった)ですが、今回はどうなんだろうか?というのはありますね。
個人的にはVMware環境でWindowsと同じマシンをシェアできるのであれば、是非Mac環境に戻って見たいですね。
#話し変わりますが、18日のエントリーで書いた個人でExchange使うパワー
#ユーザーとはもちろん本田さんのことです。別会社の媒体(PCWatch)
#だったのでリンク張るのをちょっとはばかっただけで(名前を出さなかったことに)
#他意はありません。

本田雅一 2005/06/18 18:06

トランジスタのスイッチング速度よりも、消費電力の大きさがCPU性能の上限を決める時代になると思います。そうなったとき、今見えている予定からするとインテルの方が遙かに上、というか先のロードマップが見えています。
だから継続的な成長のためにCPUのチェンジは必要です。68kからのトランジション時と違うのは、準備期間が今回かなり長く取られたこと(5年ぐらい前から?)や、エミュレーション技術の向上、CPUの余剰パワーなどの事情が違いますよね。一部のクリティカルなアプリケーションさえネイティブになっちゃえば、たぶん困りませんよ。
という僕は、PMG5ユーザーです(汗
Tigerになって、標準のアプリがかなり使い物になってきたのも大きいかな。

anonymous 2005/06/20 23:39

 「バイトオーダー変換が大問題(?)」とのことですが、一応XCHGとかBSWAP命令一発で済みますので、そんなものはあまり大きな問題ではない、ような気がします。
  エミュレーションする上で一番大きな問題は、やはりPowerアーキテクチャと比べて圧倒的に少ないレジスタではないでしょうか。
 Intelの方がレジスタが少ないので、PowerPCのレジスタはどうしてもメモリ上にマップしなければなりません。ということはPowerPCではレジスタ間で済む演算が、必ずメモリアクセスを伴う、とんでもなく遅いものになると思われます。だからメモリアクセスに比べたら、BSWAPやXCHG命令1つ増えるぐらい(この場合のオペランドはレジスタでしょうから、1、2クロックか)、大したことないような気がします。
 で、実際どのくらいの速度になるのかよく分かりませんが、うまくいけば、(両CPUが同じ程度のクロックとすると)元のPowerPCの10分の1から20分の1くらいの速度になるのではないでしょうか(つまりPowerPC1命令がIntelの10命令かそこらか。メモリアクセスがあるので、命令数比よりも悪くなると思う←これはかなりベストなケースだと思う)。動的なコード変換すれば、5分の1も夢ではないかもしれませんが、1命令ずつ解釈→実行ではそうそう期待もできないような。
 でもまぁ、動くということが重要でしょう。長ーーーい目で見てあげましょう。

栗原 潔 2005/06/20 23:51

まあ、確かにLOAD、STOREごとに数クロック追加だと大問題というほどではないかも。だけど、レジスタ数が少ないということは相対的にLOAD、STOREも増えるということで相乗効果で結構厳しいのではないでしょうかね。トランスレーション(動的コンパイル)の最適化技術がどの程度かにもよりますが。
いずれにせよ、Mac環境の場合、少数のキラーアプリケーションさえ移行してれば、ほとんどのユーザーを満足させられるということは言えそうですが。

元anonymous 2005/06/21 02:13

(う~む、anonymousというハンドル名には無理があったか^_^;)
勝手な推測ですが、おそらく、Rosettaは1命令ずつ解釈→実行するのではなく、PowerPCコードを仮想コードに見立ててIA32にJIT(Just In Time)コンパイルするのだと思います。だから最初の一回は遅いけれど、2回目以降は速くなると。今日のJavaや.NETみたいなものですね。
元が現実のCPUですから、JITにかけやすい作りではないでしょうが、レジスタが少なくても、他の処理は速いと予想されますから、うまくJITコンパイルできるのなら、そこそこの速度では実行できるように思います。ただ、そうした場合でも、メモリ上のデータを扱う場合には、必ずバイトオーダーの変換命令が必要になるというのが問題ですね。
もっとも、ファイル操作とかキー入力といったオペレーティングシステム側の処理は速度差はあまりないでしょうから、現実的なアプリケーションの多くはそれなりに使えるのだと思います。
それにしても、結局ネイティブIA32ベースにするということは、今後64bit(IA/AMD)化でパフォーマンスを最大化するためにはふたたび「再コンパイル」を要求することになるんですよね? ちょっと「今時?」という印象があります。

栗原 潔 2005/06/21 09:43

レジスタ数が少ないのはトランスレーションの時よりもエミューレーション(最初の実行)の時の方が影響大きいでしょうね。
ただ、元のオブジェクトでPowerPCのレジスタ使い尽くすような最適化が行われてるとトランスレートした時でも一部のレジスタをメモリに退避することになるので、パフォーマンス劣化は無視できないかも。
EM64Tは採用しないのでしょうかね?Pentium-M系だと今はEM64Tはないですけど、来年あたりにはどうなんでしょうか?64ビットのコードを32ビットにトランスレートするのはかなり厳しそうな気が。
Itanium系が当時の目論見とは裏腹にハイエンドニッチになってしまったことでAppleも結構悔しがってるんじゃないでしょうか。Itaniumなら他CPUのバイナリをトランスレートしてもかなり高速で実行できそうですし。

furukawa 2005/06/23 21:21

たとえホストのIA32のほうがレジスタが多かったとしても、インタプリタ型のエミュレーションではPowerPCのレジスタを直接ホストのレジスタにマップするのは事実上不可能ないし無意味です。

栗原 潔 2005/06/23 22:16

>>furukawaさん
これは、PowerPCとIA32に限ってはということなんでしょうか?それとも他命令セットのエミュレーション全般のお話?

furukawa 2005/06/24 00:21

インタプリタ型のエミュレーションは、ほぼすべてが命令を読みだしてテーブルジャンプの繰り返しという実装になっていると思います。
PowerPCの場合ですと1命令は32ビットですので、数bitは削れるとしてもこれを直接テーブルのインデックスとするのはほぼ不可能です。
また、例えばオペランドとオペコードで別々のジャンプテーブルを使うことも考えられますが(ソースレジスタ2本で10bitと、オペコードとデスティネーションレジスタで10数bitなど)、テーブルサイズは現実的になるものの、非常に遅い間接ジャンプが二つになるためほとんど無意味です。

livinginabox 2005/07/15 03:32

ものすごく遠隔レスですが^_^;
http://www.itmedia.co.jp/news/articles/0507/14/news055.html
にあるとおり、"MACTEL" が「公式」のようですね。
何しろ Apple が商標登録(#78644706)してます :-)
(MacIntel も誰かが登録してますけど)


コメントを投稿する
メールアドレス(必須):
URL:
コメント:
トラックバック

http://app.blogs.itmedia.co.jp/t/trackback/77444/2783739

トラックバック・ポリシー


» このブログのTOP

» オルタナティブ・ブログTOP


プロフィール

栗原 潔

栗原 潔

株式会社テックバイザージェイピー(TVJP) 代表取締役 弁理士
IT、知財、翻訳サービスを中心とした新しいタイプのリサーチ会社を目指しています。

詳しいプロフィール

カレンダー
2012年1月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
カテゴリー

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。


エンタープライズ・ピックアップ

news094.gif 富士通元社長の山本卓眞氏が残した次代へのメッセージ
富士通の社長、会長を務めた山本卓眞氏が亡くなった。哀悼の意を込めて、日本のIT産業界の大御所が残した次代へのメッセージを紹介しておきたい。(2/6)

news094.gif Facebook就活はもう古い?
約260人のブロガーが、ITにまつわる時事情報などを日々発信しているビジネス・ブログメディア「ITmedia オルタナティブ・ブログ」。その中から今回は「就活」「都心の雪」「ソーシャルメディア」などを紹介しよう。(2/4)

news094.gif 東北をコットンの生産地としてブランディングしたい──リー・ジャパン・細川取締役
塩害に強い綿の生産で東北に新たな産業を作りたい。オーガニックコットンの採用など、環境負荷を下げるジーンズ生産に取り組んできたリー・ジャパンの新たなチャレンジとは──。(1/30)

news094.gif 東北から始まるイノベーション
企業のICTを活用と若手IT技術者による東北発のイノベーションが、中長期的な震災復興の鍵となる。(1/27)

news094.gif 貧困国の雇用を創出する印刷屋、丸吉日新堂印刷の挑戦
全国から約2万7000件の名刺制作を受注をする札幌の小さな印刷会社の成功の秘密は、地道な社会貢献にあった。(1/16)

Special

- PR -

サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ