画像データをメモリに格納する方法で、もっとも高速に読み書きができる方法は何か?で悩んでます。

例えば1ピクセルが32bitの、320*240の画像データを、1次元配列に格納する場合は、
int a[320*240];
として、x=60, y = 30 のピクセルに書き込むには a[(320 * 30) + 60] とするのが常套手段ですが、これだと乗算が一回現れてしまいます。

乗算は遅いので、乗算は避けたいです。そこで
int a[240][320];
とした場合、a[30][60] でアクセスできますが、この場合、内部的には乗算が使われるのですか?
それとも、a[0]〜a[239]までの定数テーブルが定義されてて、乗算無しでアクセスされるのでしょうか?
これは仕様として内部動作の実装方法は規定されてるのでしょうか?


いずれにしてもint x[240] の配列を int* y[320]に登録する形にして、
x=60, y = 30 のピクセルに書き込むには、*((y[30])+60)とすれば、乗算を節約できて速くなるような気がするのですが、
これは a[(320*30)+60]や、a[30][60]でよりも高速になりますか?
それとも、CPUのパイプラインレベル等、何らかのオーバーヘッドが発生して逆に遅くなりますか?

試したいので誰か速度検証用に実験コード書いて下さい。