>  2005/03/21 (月) 01:28:08        [qwerty]
> > x86CPUは奇数アドレスへの参照には6クロック分だかのペナルティーがあるんだよ
> ところがさ...
> 最近は、キャッシュ経由でバスアクセスで、一旦キャッシュに入っ
> てしまえば、alignment なんて関係ないようです。そりゃそうだ、
> アドレスってのはキャッシュのタグにすぎないわけだから。授業で
> alignmentのdemonstrationする簡単なプログラムを書いたりするわ
> けですけど、全然差が出なくなりました。

5.1.1. ワード、ダブルワード、クワッドワードのアライメント
ワード、ダブルワード、およびクワッドワードは、メモリ内では自然境界にアライメントを
合わせる必要はない。(ワード、ダブルワード、およびクワッドワードの自然境界はそれぞ
れ、偶数のアドレス、4で割り切れるアドレス、8で割り切れるアドレスになる。)ただし、
プログラムの処理能力を向上させるためには、データ構造(特にスタック)においては可能
な限りこれらの自然境界にアライメントを合わせなければならない。その理由は、アライメ
ントが合っていないメモリにアクセスを1回行おうとすると、プロセッサは実際には2回のメ
モリ・アクセスを行う必要があるが、アライメントが合っているメモリにアクセスする場合
は、1回のメモリ・アクセスで済む。4バイト境界にまたがるワード・オペランドとダブル
ワード・オペランド、あるいは8バイト境界にまたがるクワッドワード・オペランドは、アラ
イメントが合っていないものと見なされ、アクセスには2回の別個のメモリ・バス・サイクル
が必要になる。奇数アドレスで始まるがワード境界にはまたがらないワードは、アライメン
トが合っているものと見なされ、1回のバス・サイクルでアクセスできる。

建前上はこうなってるな

参考:2005/03/21(月)01時06分09秒