このパッチは、既に FreeBSD に取り込まれています (FreeBSD 4.4-RELEASE 以降)。
Intel ® は Pentium ® プロセッサをデザインする際に、既存の IA-32 命令にいくつかの新命令を追加し、それを SSE (ストリーミング SIMD 拡張) と名付けました。 この拡張は単一命令流、複数データ流 (SIMD) モデルに基づいており、複数のデータを一度に操作することができます。 SSE を使うことでアプリケーション、特に浮動小数点演算を使用するものの性能を向上させることができます。
SSE を使用するためには、最低でも SSE 命令を扱えるアセンブラと、オペレーティングシステムによる次のような補助が必要です。
GNU binutils 2.10 では SSE をサポートしていますが、FreeBSD のカー ネルは SSE をサポートしていません。
次の変更差分は FreeBSD に基本的な SSE 命令のサポートを提供します。 私が FreeBSD 4.0-RELEASE と FreeBSD 5.0-CURRENT (2001/02/28) で試した範囲では、うまく動いているようです。
# cd /usr/src/contrib/binutils メモ: この作業が必要なのは FreeBSD 4.0-RELEASE だけです。FreeBSD 5.0-CURRENT を使っている場合には無視して下さい。 # zcat /some/where/binutils-291-SSE.diff.gz | patch -p2 # cd /usr/src/gnu/usr.bin/binutils # make install
# cd /sys # zcat /some/where/sys-rXXX-SSE-X.diff.gz | patch -p2
options CPU_ENABLE_SSE" と追加し、カーネルを再構築します。
# cd /sys/i386/conf # echo 'options CPU_ENABLE_SSE' > MYKERNEL # config MYKERNEL # cd ../../compile/MYKERNEL # make depend; make
# make install # sync ; sync ; sync # shutdown -r now
% sysctl hw.instruction_sse hw.instruction_sse: 1