マイコンの性能アップ用バッファ

マイコンの性能アップのために内蔵されているバッファと、参考情報として、アウトオブオーダー実行のマイコンのデバッグ時にも使えるバッファを空にする方法を記載します。


マイコンの性能アップのためのバッファ

高性能なマイコンは、マイコン内の処理(加算など)に注力して性能アップさせるため、メモリなどのマイコン外部への書き出し等は、バッファ(下図の赤字)に任せてマイコン内の処理と切り離している。

図.マイコン内のバッファ

参考)アウトオブオーダー実行のマイコンのバッファを空にする

ここからは、デバッグ時の参考情報です。アウトオブオーダー実行のマイコンで、プログラムを実行する際、ある地点までのデータの読み出しや書き出し処理の完了を保証し(要は、上図の赤字のバッファを空にする)、その後、後続の命令を実行する手法を記載します。

下記のように、データの読み出しや書き出し処理を完了したい箇所に①②の命令を挿入下さい。
①のロード命令ですが、r0はプログラムに影響しない常にゼロが入ったレジスタ、r10は非キャッシュ領域のアドレスを使用下さい。非キャッシュ領域とは、マイコンのデータキャッシュを使わない領域を意味します。
②のSYNC命令ですが、マイコンによって名称が異なると思いますが、同期命令を指しています。同期命令とは、ここまでの処理を完了するまでマイコンは必ず待機を意味します(SYNC以降にアウトオブオーダー実行が可能な命令があっても待機)。

 ユーザが記載したプログラム
 …
 …
 …
 ①非キャッシュ領域からのロード命令  例…LD r0, 0x0(r10)
 ②SYNCなどの同期命令
 …(後続の命令が始まります)
 …
 …

この記事が気に入ったらサポートをしてみませんか?