現在、画像データ(8ビット符号付きおよび符号なし)が16として割り当てられた16整列整数の配列に格納されているビデオ処理ソフトウェアを扱っています。
__declspec(align(16)) int *pData = (__declspec(align(16)) int *)_mm_malloc(width*height*sizeof(int),16);
一般に、次のようなsigned / unsigned char配列を使用すると、読み取りと書き込みが高速になりませんか?:
__declspec(align(16)) int *pData = (__declspec(align(16)) unsigned char *)_mm_malloc(width*height*sizeof(unsigned char),16);
キャッシュラインのサイズとデータ転送の最適化についてはほとんど知りませんが、少なくともそれが問題であることはわかっています。それを超えて、SSEは将来使用される予定であり、その場合、char-arrays(int配列とは異なり)はすでにパック形式になっています。では、どちらのバージョンが高速でしょうか?