Bit Board
二次元のバイナリデータをワードサイズの小行列で保持するテク
メリット
反転や回転をするときに、一度に読み書きする必要のあるワード数を削減することができる
「各要素の周囲5x5個を読んで計算した結果で更新する」など、二次元的なアクセスをするときに、1ワードを処理するために読む必要のあるワード数を削減できる
Bit Arrayを並べると15ワード(前後を含む3ワード*5行)読む必要があるが、Bit Boardだと9ワードで済む
二次元的なアクセスをするとき、アクセス単位がワードサイズの倍数でない場合にメモリ効率を改善できる場合がある
デメリット
アドレス計算が煩雑になる
座標系とエンディアン(バイト/ビット)の両方を考える必要がある
一行ずつ舐めるなどのワークロードでは不利なことも
ワードサイズが64bitなら、8x8とか(ワークロードによっては16x4とかの方が良いこともあるかも)
ワードサイズ4bitで2x2に分解する例
011223
455667
455667
899aab
899aab
cddeef
Bit Boardに関するテクニック集