programing:arm-programing:arm-dmb-dsb-isb
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン | |||
| programing:arm-programing:arm-dmb-dsb-isb [2020/03/19 08:32] – yoko | programing:arm-programing:arm-dmb-dsb-isb [2026/07/28 13:16] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ARMは記述した順番に命令実行されない | + | ====== |
| - | =============================== | + | |
| ARMマイコンでは、命令実行を効率化する為にCPU内部ハードウェアレベルで、命令実行の入れ替えを行っている。 | ARMマイコンでは、命令実行を効率化する為にCPU内部ハードウェアレベルで、命令実行の入れ替えを行っている。 | ||
| 従って、命令を記述した順番に命令実行やデータアクセスが必ずしも実行されない。特に、IOレジスタ操作などで実行順番が重要な場合には注意が必要。 | 従って、命令を記述した順番に命令実行やデータアクセスが必ずしも実行されない。特に、IOレジスタ操作などで実行順番が重要な場合には注意が必要。 | ||
| 行 6: | 行 5: | ||
| 尚、このような効率化はARMマイコンに限らず最近の高性能CPUでは当たり前に使われている技術。 | 尚、このような効率化はARMマイコンに限らず最近の高性能CPUでは当たり前に使われている技術。 | ||
| - | バリア命令 | + | ===== バリア命令 |
| - | --------- | + | |
| ARMにはこのような事象に対処する為に、下記の命令を備えている。 | ARMにはこのような事象に対処する為に、下記の命令を備えている。 | ||
| 行 22: | 行 20: | ||
| - 命令同期バリア命令はパイプラインをフラッシュし、命令キャッシュ(またはメモリ)から再フェッチする。 | - 命令同期バリア命令はパイプラインをフラッシュし、命令キャッシュ(またはメモリ)から再フェッチする。 | ||
| - | 記述例 | + | ===== 記述例 |
| - | ----- | + | |
| 下記、ルネサスのサンプルプログラムから抜粋。 | 下記、ルネサスのサンプルプログラムから抜粋。 | ||
| 行 60: | 行 57: | ||
| - EWARMでは、`__DSB()` `__ISB()` などのようにコンパイラ組み込み関数を利用しても記述できる。(`# | - EWARMでは、`__DSB()` `__ISB()` などのようにコンパイラ組み込み関数を利用しても記述できる。(`# | ||
| - | 補足 | + | ===== 補足 |
| - | ---- | + | |
| - I/ | - I/ | ||
| - | 参考 | + | ===== 参考 |
| - | ---- | + | |
| - | 1. [[wpjp> | + | - [[wpjp> |
| - | 2. [[http:// | + | |
| - | 3. [[https:// | + | |
| - | 4. [[https:// | + | |
programing/arm-programing/arm-dmb-dsb-isb.1584574327.txt.gz · 最終更新: by yoko
