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へのリンクは以下の方がよいようです。 | |
| 栗原 潔 | 2005/06/17 14:04 |
|
>>anonymousさん | |
| 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機より全然良かったですね。 | |
| 本田雅一 | 2005/06/18 18:06 |
|
トランジスタのスイッチング速度よりも、消費電力の大きさがCPU性能の上限を決める時代になると思います。そうなったとき、今見えている予定からするとインテルの方が遙かに上、というか先のロードマップが見えています。 | |
| anonymous | 2005/06/20 23:39 |
|
「バイトオーダー変換が大問題(?)」とのことですが、一応XCHGとかBSWAP命令一発で済みますので、そんなものはあまり大きな問題ではない、ような気がします。 | |
| 栗原 潔 | 2005/06/20 23:51 |
|
まあ、確かにLOAD、STOREごとに数クロック追加だと大問題というほどではないかも。だけど、レジスタ数が少ないということは相対的にLOAD、STOREも増えるということで相乗効果で結構厳しいのではないでしょうかね。トランスレーション(動的コンパイル)の最適化技術がどの程度かにもよりますが。 | |
| 元anonymous | 2005/06/21 02:13 |
|
(う~む、anonymousというハンドル名には無理があったか^_^;) | |
| 栗原 潔 | 2005/06/21 09:43 |
|
レジスタ数が少ないのはトランスレーションの時よりもエミューレーション(最初の実行)の時の方が影響大きいでしょうね。 | |
| furukawa | 2005/06/23 21:21 |
|
たとえホストのIA32のほうがレジスタが多かったとしても、インタプリタ型のエミュレーションではPowerPCのレジスタを直接ホストのレジスタにマップするのは事実上不可能ないし無意味です。 | |
| 栗原 潔 | 2005/06/23 22:16 |
|
>>furukawaさん | |
| furukawa | 2005/06/24 00:21 |
|
インタプリタ型のエミュレーションは、ほぼすべてが命令を読みだしてテーブルジャンプの繰り返しという実装になっていると思います。 | |
| livinginabox | 2005/07/15 03:32 |
|
ものすごく遠隔レスですが^_^; | |
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 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 |
オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。

富士通元社長の山本卓眞氏が残した次代へのメッセージ
Facebook就活はもう古い?
東北をコットンの生産地としてブランディングしたい──リー・ジャパン・細川取締役
東北から始まるイノベーション
貧困国の雇用を創出する印刷屋、丸吉日新堂印刷の挑戦