新石器Wiki近年はシリコン(石)から進化した便利なもので溢れる時代。そんな気になった事や試した事など記す。補足ARMは記述した順番に命令実行されないARMマイコンでは、命令実行を効率化する為にCPU内部ハードウェアレベルで、命令実行の入れ替えを行っている。従って、命令を記述した順番に命令実行やデータアクセスが必ずしも実行されない。IOレジスタ操作などで実行順番が重要な場合には注意が必要。このような効率化はARMマイコンに限らず最近の高性能CPUでは当たり前に使われている技術。バリア命令ARMにはこのような事象に対処する為に、下記の命令を備えている。データメモリバリア(DMB)命令データメモリバリア命令よりも前に存在するすべてのメモリアクセスが、先にアクセス完了する事を保障する。メモリアクセスに関連しない、命令を実行する事は可能。データ同期バリア(DSB)命令データ同期バリア命令よりも前に存在するすべてのメモリアクセスが完了するまで、以後の命令を実行しないように、プロセッサを待機状態にする。データ同期バリア命令が完了するまで、それ以降の命令が実行を完了したり割り込みマスクを変更する事はない。全てのキャッシュ、分岐予測およびTLBメンテナンス処理が完了する。命令同期バリア命令はパイプラインをフラッシュし、命令キャッシュ(またはメモリ)から再フェッチする。下記、ルネサスのサンプルプログラムから抜粋。ようにコンパイラ組み込み関数を利用しても記述できる。<intrinsics.h>が必要)補足I/Oデータアクセス順番を確保する為に、DSB命令などを使わずに、該当レジスタのダミーリードで記述してある例もある。International。