Raspbianは何が最適化されているのか?
SDカードが届くまでの暇潰し。
Raspberry Pi向けのディストリビューションはいくつかあるが、
DebianベースのRaspbianがRaspberry PiのHW向けに最適化されているようだ。
では、具体的にどのような点が最適化されているのか?
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以降向けにコンパイルされているため
使用不可能との記載も発見。
以上、何か勘違いしていないと良いな。