| « 2005年6月16日 | 2005年6月17日の投稿 |
2005年6月18日 » |
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エントリー)。
| « 2005年6月16日 | 2005年6月17日の投稿 |
2005年6月18日 » |
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 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 |
オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。

顧客に“ワォ!”という体験を提供――ザッポスに学ぶ企業文化の確立
ちょっとした対話が成長を助ける――上司と部下が話すとき互いに学び合う
悩んだときの、自己啓発書の触れ方
考えるべきは得意なものは何かではなく、お客さまが高く評価するものは何か
なんて素敵にフェイスブック
部下を叱る2つのポイント
第6回 幸せの創造こそ、ビジネスの使命