単純なテーブル参照を繰り返すことによりハフマンデコードする場合のデコードテーブルのサイズについて考えてみる。

2014-01-19 更新: 証明を詰めて結論が変わりました。

Read the rest of this entry

引き続き「ソロ、UNAC無し、OW無し」の縛りで、ストーリーマスター(全ミッションSランク)と サブクエストマスター(全サブクエ達成)の実績を解除しました。

Read the rest of this entry

相変わらずストーリーミッションでは「ソロ、UNAC無し、OW無し」でやってます。で、プレイヤーランクが S になりました。

Read the rest of this entry

性能向上
  • ULRG,ULRA: 「圧縮率優先」でエンコードされた映像の RGB32/ARGB へのデコードを高速化した。

Read the rest of this entry

AVX2、具体的には VPGATHERDD と VPSLLVQ が実装されたので、それを使ってハフマンデコードを4つ並列に行うコードを書いていました。

Read the rest of this entry

AVX-512 のマニュアルを見てると、よく分からないことがいくつかあります。

  • 64bit モードの場合 zmm だけでなく ymm や xmm も 32 本使えると書いてある (1.2.2 32 SIMD Register Support) 。32 本使うためには VEX プレフィックスではなく EVEX プレフィックスを使う必要がある (4.1 OVERVIEW SECTION) が、命令一覧を見ても EVEX プレフィックスによる ymm や xmm の使用は見つからないし、Chapter 4 AVX-512 Instruction Encoding を見ても具体的な記述が無い。
    4.6.4 Vector Length Orthogonality に書いてあった。ただし、命令一覧に記載されていないのは間違いないので、ymm/xmm の場合に命令がどう動作するのかは仕様上決まっていないことになる(特に AVX1/2 に存在しない命令の場合)。
  • zmm を使う場合の、VPADDB や VPADDW を筆頭とする バイト/ワード 単位の演算が記載されていない。(VPMOVZXBQ や VPMOVQB みたいな変換命令はある)

AVX-512 は LNI(Larrabee New Instructions: Xeon Phi の命令セット)を元にしているわけですが、LNI には ymm/xmm レジスタは元々存在せず、バイト/ワード 単位の演算も存在しません。Xeon Phi のマニュアルからコピーしてくるときに追加し忘れたのか、やっぱりホントにサポートしていないのか、どっちなんでしょう…