torutkのブログ

ソフトウェア・エンジニアのブログ

Solarisプログラミング関係

SPARCプロセッサのVIS

C++は遅い」ので、高速化の方法を調べていたところVISに行き当たった。Intel PentiumMMXみたいな機能です。64bitレジスタに複数のデータを格納し、一度の演算命令の実行で複数のデータの演算を行ってしまう、SIMD(Single Instruction Multi Data)です。UltraSPARCは、同時に2つのVIS命令を実行できるようなので、16bit整数の演算なら同時8演算となるはず。ただ、これを使うには、あらかじめ演算データを配列に突っ込んでおく必要があり、オブジェクト指向プログラムとはちょっと相性が悪そうです。
VISをC++から使うには、VSDK(VIS Software Developer's Kit)がSunから提供されています。SunのC++コンパイラ用で、マクロ定義で構成されています。
http://www.sun.com/processors/vis/vsdk.html

スタックオーバーフロー

スタックオーバーフローが発生した場合、SEGVとなる。プロセスのスタックサイズは、ulimit -sで確認/変更可能。Solaris8では、デフォルトが8MB(ソフトリミット)の模様。スタックオーバーフローの処理の仕方について参考になるWebページを発見。
http://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.htm

高精度/低負荷な処理時間の測定方法

SPARC Solarisで負荷が小さく精度の高い計測には、TICKレジスタを直接アクセスする方法がある。
参考になるWebページ。
http://www.hpcs.is.tsukuba.ac.jp/~msato/pdplab/timer-collection/