3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Armのunaligned accessについて

Posted at

How does the ARM Compiler support unaligned accesses?のメモ。

unaligned accessとは

ロード・ストア命令において、データサイズでアラインメントされていないアドレスにアクセスすること。
e.g. アドレス0x0002からのロングワード(4バイト)アクセス(LDR/STR)など。
C言語でpackedの構造体メンバにアクセスする場合などに起こりうる。

unaligned accessを行うとどうなるか

ARMv5以前

データアボート例外発生。

ARMv6以降

ハードウェアでunalinged accessをサポート(設定でON/OFF)。

ハードウェアではどう扱っているか

unalinged accessが発生した場合、インタフェースのバス幅(64bit or 128bit)分まとめて読み込み、必要な部分のみ処理することにより対応。処理が増える分、当然aligned accessより遅くなる。
また、Device memoryに設定されているバス(通常、ペリフェラルが繋がる(FPGA含む))には当てはまらない(例外発生)。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?