あそびばLinux

Linux関連を中心に

Raspbianは何が最適化されているのか?

SDカードが届くまでの暇潰し。

Raspberry Pi向けのディストリビューションはいくつかあるが、

DebianベースのRaspbianがRaspberry PiのHW向けに最適化されているようだ。

 

では、具体的にどのような点が最適化されているのか?

http://www.raspbian.org/

http://www.memetic.org/raspbian-benchmarking-armel-vs-armhf/

この辺りを参考に、半ば素人ながらに調べてみた。

 

一言で言うと、Raspberry Pi上で

armhf(hardware floating point = HWによる浮動小数点演算)を

サポートしているかどうからしい。

現行のDebian squeezeはarmelのみ対応のため、Raspberry PiのSoCに乗っている

VFPをフルに活用出来ないとの事。

→VFP(Vector Floating Point)とはARMアーキテクチャ向けのFPU(Floating Point Unit)。

 

→armelとarmhfはABI(Application Binary Interfaces)の名称。

前者はsoft/softfp対応、後者はhardfp対応との事。

softは一切VFPを使用しない。softfpはVFPを使用出来るものの、一度整数用レジスタを経由してVFPにデータを転送する。

これにより、VFPの有無に左右されない互換性が得られる一方、オーバーヘッドが生じる。

hardfpはVFPの存在を前提としており、後方互換性を失う代わりにダイレクトに(=高速に)VFPのレジスタにデータを転送できる。

 

ここでもう一つの疑問。Debianもwheezyからarmhf対応のはずで、

Debian wheezyでは不都合な点があるからRaspbianを作ったはず。

それは何か再度調べてみた。

 

Raspberry PiのCPUはARM11(ARM1176JZF-S)。

インストラクションセットはARMv6。

これにVFPv2が乗っているという構成。

 

参考ページによると、Debian/armelはARMv4インストラクションセットをサポートしており、Debian/armhfはARMv7インストラクションセットをサポートしているようだ。ARMv7に対応しているのはARM Cortex-Aファミリ等からである。

つまりDebian wheezyはABIはarmhfであるが、Raspberry PiのCPU(ARMv6)には対応していないようだ。

 

Raspberry PiにてVFPv2をフルに活用するにはDebian wheezy以外の方法で

armhfに対応する必要があり、そのための手段がRaspbianの提供という事らしい。

 

なお、Ubuntuはarmel/armhf版ともにARMv7以降向けにコンパイルされているため

使用不可能との記載も発見。

 

以上、何か勘違いしていないと良いな。