新石器Wiki

近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。

ユーザ用ツール

サイト用ツール


programing:arm-programing:arm-dmb-dsb-isb


差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
programing:arm-programing:arm-dmb-dsb-isb [2018/10/03 10:03] – 作成 yokoprograming:arm-programing:arm-dmb-dsb-isb [2020/03/19 08:32] (現在) yoko
行 1: 行 1:
 ARMは記述した順番に命令実行されない ARMは記述した順番に命令実行されない
 =============================== ===============================
-ARMマイコンでは、命令実行効率化する為にCPU内部ハードウェアレベルで、命令実行の入れ替えを行って効率化している。  +ARMマイコンでは、命令実行効率化する為にCPU内部ハードウェアレベルで、命令実行の入れ替えを行っている。  
 従って、命令を記述した順番に命令実行やデータアクセスが必ずしも実行されない。特に、IOレジスタ操作などで実行順番が重要な場合には注意が必要。 従って、命令を記述した順番に命令実行やデータアクセスが必ずしも実行されない。特に、IOレジスタ操作などで実行順番が重要な場合には注意が必要。
  
行 58: 行 58:
 </code> </code>
  
-  - EWARMでは、`__DSB()` `__ISB()` などのようにコンパイラ組み込み関数を利用しても記述できる。+  - EWARMでは、`__DSB()` `__ISB()` などのようにコンパイラ組み込み関数を利用しても記述できる。(`#include <intrinsics.h>`が必要)
  
 補足 補足
 ---- ----
   - I/Oデータアクセス順番を確保する為に、`DSB`命令などを使わずに、該当レジスタのダミーリードで記述してある例もある。(多少、命令の処理速度が速くなる為と思われる)   - I/Oデータアクセス順番を確保する為に、`DSB`命令などを使わずに、該当レジスタのダミーリードで記述してある例もある。(多少、命令の処理速度が速くなる為と思われる)
 +
 +参考
 +----
 +
 +1. [[wpjp>メモリバリア]]
 +2. [[http://i-saint.hatenablog.com/entry/20101005/1286208402|マルチスレッドとメモリ同期]]
 +3. [[https://k-onishi.hatenablog.jp/entry/2019/03/10/000311|Linux Kernel ~ 同期機構 ~]]
 +4. [[https://srad.jp/~Yoh2/journal/544783/|ロード/ストア命令の追い越し例]]
  
programing/arm-programing/arm-dmb-dsb-isb.1538528605.txt.gz · 最終更新: 2018/10/03 10:03 by yoko