ページ「ジム・ケラー」と「リトルエンディアン」の間の差分

提供: MonoBook
(ページ間の差分)
ナビゲーションに移動 検索に移動
(ページの作成:「'''ジム・ケラー'''(jim keller)とは、CPUの天才である。 == 概要 == * 1990年台 DECに就職、DEC Alphaを開発、人類初の1GHzで...」)
 
imported>Administrator
(ページの作成:「'''リトルエンディアン'''(英語:little endian)とは、コンピューターメモリ上におけるデータの並び(バイトオ...」)
 
1行目: 1行目:
'''ジム・ケラー'''(jim keller)とは、[[CPU]]の天才である。
+
'''リトルエンディアン'''[[英語]]:little endian)とは、[[コンピューター]]の[[メモリ]]上における[[データ]]の並び([[バイトオーダー]])の規約のひとつである。
  
 
== 概要 ==
 
== 概要 ==
* 1990年台 [[DEC]]に就職、[[DEC Alpha]]を開発、人類初の1GHzで動く[[CPU]]である
+
リトルエンディアンでは[[データ]]を下位から上位に向けて格納する。
* 1998年 [[AMD]]に転職、[[Athlon]]を開発、家庭用でも1GHzを実現、後に[[AMD64]] ([[x64]])が世界を席巻する
+
例えば0x12345678という数値は、8ビット区切りであれば「0x78,0x56,0x34,0x12」と格納され、16ビット区切りであれば「0x5678,0x1234」と格納される。
* 2008年 [[Apple]]に転職、[iPhone]のCPUである[[Apple A4]]を開発
+
 
* 2008年 [[MacBook Air]]を開発。その後、世界中の[[ノートパソコン]]が同じデザインになる
+
== 利点と欠点 ==
* 2012年 [[リサ・スー]]に助けを求められ[[AMD]]に復帰、[[Ryzen]]を開発しAMDの倒産を回避する
+
リトルエンディアンの利点は、下位バイトのアドレスが固定されるためバイト単位でもワード単位でもアクセスが非常にシンプルにできる点である。
* 2017年 [[テスラモーターズ]]に転職、自動運転を作ってるらしい
+
これは実際のデータはバイト単位でしか保持しないが、無駄にワード単位で確保されているメモリに対して、バイト単位でアクセスしても正常な値が取得できることを意味する。
 +
 
 +
また、データへのアクセスは「アドレス」と「データ長」だけでよく、複雑なアドレス計算を伴わないため、回路やアルゴリズムを非常にシンプルにできるため、無駄の節約による高速化や省電力化が見込める。1970年代に大流行した[[DEC VAX]]など、[[半導体]]の性能が現在ほど高くなかった時代に少しでも回路を小さくしようと努力した結晶といえる。
 +
なお、現在の巨大回路かつ超高速な[[CPU]]では差がでるほどではない。
 +
 
 +
一方でリトルエンディアンの欠点は人間が視覚的に把握しづらいが挙げられる。
 +
[[人間アセンブラ]]には評判が悪く、一般的な[[プログラマ]]からしても[[デバッガ]]で[[メモリダンプ]]を眺めても把握に時間を要する。
 +
また、[[インターネット]]や[[イントラネット]]の世界を征した[[TCP/IP]][[ビッグエンディアン]]に統一されているため無駄な変換が発生し、それが原因で低速化することもある。
 +
なお、最近の[[LANカード]]などでは専用ハードウェアでバイトオーダーの変換を行うので速度的にはそんなに差が出ることはない。
 +
 
 +
総合すると現在では[[リトルエンディアン]][[ビッグエンディアン]]も差はない。
 +
その違いは[[宗教上の理由]]であるといえる。
 +
不毛な争いをやめさせるため、[[ARM]]では[[リトルエンディアン]]と[[ビッグエンディアン]]を切り替えられる[[バイエンディアン]]を採用した。
 +
 
 +
== 採用事例 ==
 +
* [[DEC VAX]]
 +
* [[DEC Alpha]] - 後の[[AMD Athlon]]である。
 +
* [[Intel x86]]
 +
* [[NEC V810]] - [[バーチャルボーイ]]や[[PC-FX]]が積んでた[[CPU]]。最近でも[[BDドライブ]]などの制御用に搭載されていることが多い。
 +
 
 +
== 関連項目 ==
 +
* [[リトルエンディアン]]
 +
* [[ビッグエンディアン]]
 +
* [[バイエンディアン]]

2018年2月21日 (水) 01:39時点における最新版

リトルエンディアン英語:little endian)とは、コンピューターメモリ上におけるデータの並び(バイトオーダー)の規約のひとつである。

概要[編集 | ソースを編集]

リトルエンディアンではデータを下位から上位に向けて格納する。 例えば0x12345678という数値は、8ビット区切りであれば「0x78,0x56,0x34,0x12」と格納され、16ビット区切りであれば「0x5678,0x1234」と格納される。

利点と欠点[編集 | ソースを編集]

リトルエンディアンの利点は、下位バイトのアドレスが固定されるためバイト単位でもワード単位でもアクセスが非常にシンプルにできる点である。 これは実際のデータはバイト単位でしか保持しないが、無駄にワード単位で確保されているメモリに対して、バイト単位でアクセスしても正常な値が取得できることを意味する。

また、データへのアクセスは「アドレス」と「データ長」だけでよく、複雑なアドレス計算を伴わないため、回路やアルゴリズムを非常にシンプルにできるため、無駄の節約による高速化や省電力化が見込める。1970年代に大流行したDEC VAXなど、半導体の性能が現在ほど高くなかった時代に少しでも回路を小さくしようと努力した結晶といえる。 なお、現在の巨大回路かつ超高速なCPUでは差がでるほどではない。

一方でリトルエンディアンの欠点は人間が視覚的に把握しづらいが挙げられる。 人間アセンブラには評判が悪く、一般的なプログラマからしてもデバッガメモリダンプを眺めても把握に時間を要する。 また、インターネットイントラネットの世界を征したTCP/IPビッグエンディアンに統一されているため無駄な変換が発生し、それが原因で低速化することもある。 なお、最近のLANカードなどでは専用ハードウェアでバイトオーダーの変換を行うので速度的にはそんなに差が出ることはない。

総合すると現在ではリトルエンディアンビッグエンディアンも差はない。 その違いは宗教上の理由であるといえる。 不毛な争いをやめさせるため、ARMではリトルエンディアンビッグエンディアンを切り替えられるバイエンディアンを採用した。

採用事例[編集 | ソースを編集]

関連項目[編集 | ソースを編集]