x86やx64における最適化まとめ
ビット演算とかSSEに偏ったまとめです
入門
- Intel® 64 and IA-32 Architectures Optimization Reference Manual
- gccで simd mmx sse sse2
- 明日使えないすごいビット演算
x86/x64最適化勉強会1
- 条件分岐とcmovとmaxps
- IA32/Intel64におけるキャッシュ利用最適化
- 正規表現とJITと並列化とベンチマーク
- ビットを数える popcnt
- SSE4.2の文字列処理命令の紹介
- CODEC屋のx86/x64最適化
- vs CoreMA
- 本物のX86 Optimizerはiccを使う
- shuJITコンパイラネタ
x86/x64最適化勉強会2
- 研究動向から考えるX86/x64最適化手法
- 具体例1: SIMD命令を利用した探索の分岐排除
- 具体例2: 整数の固定長圧縮によるPipelineハザードの回避
- 具体例3: SIMD命令を利用した並び替え処理の分岐排除
- ビット演算による最適化の妙味とJITアセンブラ
- Range Coderの復号処理
- 二分木探索はCPUのパイプラインが止まりやすい -- 圧縮コーデックでの例
- FFTのビット反転(時間があれば)
- Xbyak
- C++ヘッダのみで提供されるクラスライブラリ
- Range Coderの復号処理
- Intel Architecture Code Analyzer について
- 適応フィルタのSIMD最適化
- JIT profiling with VTune
一般
- exp(x)の高速計算
- ビットを数える・探すアルゴリズム
- edit distance をはやくしたときのはなし (experimentalマラソンというか edit distance、c++: 編集距離を求めるアルゴリズム
コンピュータ将棋
LS3600さんの記事
- はじめてのSSE その1・2・3・4・5・6・7・8
- SSEを用いたbsr/bsf命令の実現に向けて その1・2・3・4・5・6
- popcntを用いたbitboardに対するforeachの高速化手法の提案
- SSEを使って128ビットbsr/bsf的な事をする
その他
プロファイリング
- Linuxのパフォーマンス解析ツールであるperfの使いかたの紹介
- 2.6.31以降カーネルに標準で付いてる
コンパイラ
資料
- The microarchitecture of Intel, AMD and VIA CPUs
- Lists of instruction latencies, throughputs and microoperation breakdowns for Intel, AMD and VIA CPUs
- x86/x64最適化勉強会資料のリンク