programing:arm-programing:arm-dmb-dsb-isb
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| programing:arm-programing:arm-dmb-dsb-isb [2018/10/05 11:33] – [記述例] 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/ | ||
| + | |||
| + | ===== 参考 ===== | ||
| + | |||
| + | - [[wpjp> | ||
| + | - [[http:// | ||
| + | - [[https:// | ||
| + | - [[https:// | ||
programing/arm-programing/arm-dmb-dsb-isb.1538706783.txt.gz · 最終更新: by yoko
